Android_第三方登录——QQ登录
2016-06-20 11:37
721 查看
前文完成了第三方新浪微博的登陆,这篇文章介绍QQ作为第三方登录,登陆流程如下图所示(参考QQ官方文档):
代码实现如下所示:
登录成功后调用public void onComplete(JSONObject arg0) 回传的JsonObject, 其中包含OpenId, AccessToken等重要数据。
{
“ret”:0,
“pay_token”:”xxxxxxxxxxxxxxxx”,
“pf”:”openmobile_android”,
“expires_in”:”7776000”,
“openid”:”xxxxxxxxxxxxxxxxxxx”,
“pfkey”:”xxxxxxxxxxxxxxxxxxx”,
“msg”:”sucess”,
“access_token”:”xxxxxxxxxxxxxxxxxxxxx”
}
完成登陆后并获取到用户的头像等信息,下面介绍如何获取用户头像等信息,参考官方文档
在SDK中,有一些功能接口,如登录,分享消息到QQ等,SDK对其调用单独封装成了独立的接口;但是,SDK中的另外一些接口,如获取用户信息、获取用户相册列表、发送分享(addshare)、发表说说、上传图片、创建相册等,则被统一封装在Tencent类的request或requestAsync方法中,通过传入不同的参数实现不同的接口调用。request和requestAsync这两个接口的功能相同。
获取用户信息有两种方式:同步方式和异步方式
request(String graphPath, Bundle params, String httpMethod) 发送同步调用请求访问腾讯提供的OpenAPI。
requestAsync(String graphPath, Bundle params, String httpMethod, IRequestListener listener, Object state) 发送异步调用请求访问腾讯提供的OpenAPI。
所以在获取用户信息后再获取用户的头像 昵称等信息,代码如下:
至此完成了使用QQ账号登陆自己的App并与自己的App进行绑定的方法。
代码实现如下所示:
package com.ppl.get_loc.chat; import org.json.JSONObject; import android.app.Activity; import android.content.Context; import android.widget.Toast; import com.ppl.get_loc.MainActivity; import com.ppl.get_loc.utils.PublicData; import com.tencent.open.utils.Util; import com.tencent.tauth.IUiListener; import com.tencent.tauth.Tencent; import com.tencent.tauth.UiError; public class QqLogin { private static final String Scope = "all"; private Context mContext; private Activity mActivity; public QqLogin(Context mContext, Activity mActivity) { super(); this.mContext = mContext; this.mActivity = mActivity; } public void login() { // Tencent类是SDK的主要实现类,开发者可通过Tencent类访问腾讯开放的OpenAPI。 // 其中APP_ID是分配给第三方应用的appid,类型为String。 PublicData.mTencent = Tencent.createInstance(PublicData.QQ_APP_ID, mContext); if (!PublicData.mTencent.isSessionValid()) { PublicData.mTencent.login(mActivity, Scope, loginListener); } } public IUiListener loginListener = new BaseUiListener(){ @Override public void onComplete(Object arg0) { // TODO Auto-generated method stub super.onComplete(arg0); System.out.println("QQ 用户信息: "+arg0.toString()); } }; /** * 调用SDK已经封装好的接口时,例如:登录、快速支付登录、应用分享、应用邀请等接口,需传入该回调的实例。 * */ public class BaseUiListener implements IUiListener { @Override public void onCancel() { // TODO Auto-generated method stub Toast.makeText(mContext, "取消登陆", Toast.LENGTH_LONG).show(); } @Override public void onComplete(Object response) { // TODO Auto-generated method stub if (null == response) { Toast.makeText(mContext, "返回为空,登录失败", Toast.LENGTH_LONG).show(); return; } JSONObject jsonResponse = (JSONObject) response; if (null != jsonResponse && jsonResponse.length() == 0) { Toast.makeText(mContext, "返回为空,登录失败", Toast.LENGTH_LONG).show(); return; } Toast.makeText(mContext, "登录成功", Toast.LENGTH_LONG).show(); } @Override public void onError(UiError arg0) { // TODO Auto-generated method stub Toast.makeText(mContext, "登录失败"+arg0, Toast.LENGTH_LONG).show(); } } }
登录成功后调用public void onComplete(JSONObject arg0) 回传的JsonObject, 其中包含OpenId, AccessToken等重要数据。
{
“ret”:0,
“pay_token”:”xxxxxxxxxxxxxxxx”,
“pf”:”openmobile_android”,
“expires_in”:”7776000”,
“openid”:”xxxxxxxxxxxxxxxxxxx”,
“pfkey”:”xxxxxxxxxxxxxxxxxxx”,
“msg”:”sucess”,
“access_token”:”xxxxxxxxxxxxxxxxxxxxx”
}
完成登陆后并获取到用户的头像等信息,下面介绍如何获取用户头像等信息,参考官方文档
在SDK中,有一些功能接口,如登录,分享消息到QQ等,SDK对其调用单独封装成了独立的接口;但是,SDK中的另外一些接口,如获取用户信息、获取用户相册列表、发送分享(addshare)、发表说说、上传图片、创建相册等,则被统一封装在Tencent类的request或requestAsync方法中,通过传入不同的参数实现不同的接口调用。request和requestAsync这两个接口的功能相同。
获取用户信息有两种方式:同步方式和异步方式
request(String graphPath, Bundle params, String httpMethod) 发送同步调用请求访问腾讯提供的OpenAPI。
requestAsync(String graphPath, Bundle params, String httpMethod, IRequestListener listener, Object state) 发送异步调用请求访问腾讯提供的OpenAPI。
所以在获取用户信息后再获取用户的头像 昵称等信息,代码如下:
private void updateUserInfo() { if (PublicData.mTencent != null && PublicData.mTencent.isSessionValid()) { IUiListener listener = new IUiListener() { @Override public void onError(UiError e) { } @Override public void onComplete(final Object response) { new Thread(){ @Override public void run() { JSONObject json = (JSONObject)response; UserQQLogin(json); //根据前文新浪微博账号与自己App绑定方法,对获取的QQ用户信息进行绑定 } }.start(); } @Override public void onCancel() { } }; mInfo = new UserInfo(mContext, PublicData.mTencent.getQQToken()); mInfo.getUserInfo(listener); } }
至此完成了使用QQ账号登陆自己的App并与自己的App进行绑定的方法。
相关文章推荐
- 将Eclipse代码导入到AndroidStudio的两种方式
- 总结Android 性能优化的几个方面
- 关于android:windowAnimationStyle
- Android NDK 交叉编译
- 自定义TextView实现文字伞动效果
- Android Tab标签的使用基础
- android线程池--ThreadPoolExecutor
- 如何在Android Studio项目中导入开源库?
- Android抢红包插件实现原理浅析
- Android studio搭建开发环境
- [Android Pro] AIDL进程间传递自定义类型参数
- android自动弹出软键盘
- Android五大布局介绍&属性设置大全
- Socked
- SearchView(1)
- 制作Android Demo GIF:程序演示效果GIF图录制
- ubuntu16.04 LTS 编译 AndroidL 报错 recipe commences before first targe
- 开发工具: ERROR: In <declare-styleable> MenuView, unable to find attribute android:preserveIconSpacing
- android studio无法关联源码
- 自定义View之常用工具类汇总