Android开发第三方登录--QQ登录
2017-06-08 12:14
453 查看
QQ登录、微信登录,新浪微博登录资料获取demo下载
http://download.csdn.net/detail/pkandroid/9903796[/code]
github地址 进入https://github.com/HYVincent/Login[/code]
长话短说。。。
1、创建APP,获取APP_ID和APP_KEY,当然,首先得有个账号**
2、下载sdk 点击去下载
3、导包(我的是AndroidStudio 2.3.2)解压下载的sdk,把mta-sdk-1.6.2.jar和open_sdk_r5788_lite.jar复制到lib下(注意区分open_sdk_r5788_lite.jar和open_sdk_r5788.jar的区别,我用了QQ登录,因此基础班就够用了),然后选中邮件选择add as Library….
4、配置AndroidManifest 注意**要替换为自己申请的APP_ID
需要一下权限<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><!--QQ登录配置 start--> <activity android:name="com.tencent.tauth.AuthActivity" android:noHistory="true" android:launchMode="singleTask" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="tencent******" /> </intent-filter> </activity> <!--SDK_V2.0引入了AssistActivity,开发者需在androidManifest.xml中注册。代码如下:--> <activity android:name="com.tencent.connect.common.AssistActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="orientation|keyboardHidden|screenSize" /> <!--QQ登录配置 end-->
4、在LoginActivity中初始化并使用public class LoginActivity extends BaseActivity implements LoginView.View { ......... private Tencent mTencent; private UserInfo userInfo; private BaseUiListener listener = new BaseUiListener(); @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); ButterKnife.bind(this); ..... // Tencent类是SDK的主要实现类,开发者可通过Tencent类访问腾讯开放的OpenAPI。 // 其中APP_ID是分配给第三方应用的appid,类型为String。 mTencent = Tencent.createInstance(Config.QQ_LOGIN_APP_ID, this.getApplicationContext()); } private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 0) { JSONObject response = (JSONObject) msg.obj; if (response.has("nickname")) { Gson gson=new Gson(); QQUser user=gson.fromJson(response.toString(),QQUser.class); if (user!=null) { ViseLog.d("userInfo:昵称:"+user.getNickname()+" 性别:"+user.getGender()+" 地址:"+user.getProvince()+user.getCity()); ViseLog.d("头像路径:"+user.getFigureurl_qq_2()); // Picasso.with(MainActivity.this).load(response.getString("figureurl_qq_2")).into(imageView); } } } } }; @OnClick({R.id.login_tv_register, R.id.login_btn_go, R.id.login_tv_forget_password,R.id.iv_other_login_qq,R.id.iv_other_login_sina,R.id.iv_other_login_wx}) public void onViewClicked(View view) { switch (view.getId()) { ...... case R.id.iv_other_login_qq: /** 吊起QQ登录 */ if (!mTencent.isSessionValid()) { //注销登录 mTencent.logout(this); mTencent.login(this, "all", listener); } break; ...... } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { Tencent.onActivityResultData(requestCode,resultCode,data,new BaseUiListener()); } // 实现回调 IUiListener //调用SDK已经封装好的接口时,例如:登录、快速支付登录、应用分享、应用邀请等接口,需传入该回调的实例。 class BaseUiListener implements IUiListener { @Override public void onComplete(Object o) { ViseLog.d("result:"+o.toString()); try { JSONObject jsonObject = new JSONObject(o.toString()); initOpenidAndToken(jsonObject); updateUserInfo(); } catch (JSONException e) { e.printStackTrace(); } } @Override public void onError(UiError e) { showMsg(0,"onError:code:" + e.errorCode + ", msg:" + e.errorMessage + ", detail:" + e.errorDetail); } @Override public void onCancel() { showMsg(2,"onCancel"); } } /** * 获取登录QQ腾讯平台的权限信息(用于访问QQ用户信息) * @param jsonObject */ public void initOpenidAndToken(JSONObject jsonObject) { try { String token = jsonObject.getString(Constants.PARAM_ACCESS_TOKEN); String expires = jsonObject.getString(Constants.PARAM_EXPIRES_IN); String openId = jsonObject.getString(Constants.PARAM_OPEN_ID); if (!TextUtils.isEmpty(token) && !TextUtils.isEmpty(expires) && !TextUtils.isEmpty(openId)) { mTencent.setAccessToken(token, expires); mTencent.setOpenId(openId); } } catch(Exception e) { } } private void updateUserInfo() { if (mTencent != null && mTencent.isSessionValid()) { IUiListener listener = new IUiListener() { @Override public void onError(UiError e) { } @Override public void onComplete(final Object response) { Message msg = new Message(); msg.obj = response; Log.i("tag", response.toString()); msg.what = 0; mHandler.sendMessage(msg); } @Override public void onCancel() { } }; userInfo = new UserInfo(this, mTencent.getQQToken()); userInfo.getUserInfo(listener); } } }
5、登录结果:
授权结果:result:{"ret":0,"openid":"A3F4F2111DFBD37E2A5250A9B805868","access_token":"5E8D0507F17D9295C916FE6F401AE6","pay_token":"90DB41BD1A367F8FBAD06EDC9FADB80","expires_in":7776000,"pf":"desktop_m_qq-10000144-android-2002-","pfkey":"cc45091bfc5811636989a47db68ec5fc","msg":"","login_cost":143,"query_authority_cost":296,"authority_cost":0}
格式化一下:
登录结果:{ "ret":0, "msg":"", "is_lost":0, "nickname":"习惯宠着你", "gender":"男", "province":"广东", "city":"深圳", "figureurl":"http://qzapp.qlogo.cn/qzapp/1106210336/A3F4F2111DF37E2A52502A9B805868/30", "figureurl_1":"http://qzapp.qlogo.cn/qzapp/1106210336/A3F4F2111DFBD2A52502A9B805868/50", "figureurl_2":"http://qzapp.qlogo.cn/qzapp/1106210336/A3F4F2111DFB7E2A52502A9B805868/100", "figureurl_qq_1":"http://q.qlogo.cn/qqapp/1106210336/AF4F2111DFBD37E2A5502A9B805868/40", "figureurl_qq_2":"http://q.qlogo.cn/qqapp/1106210336/A3F4F2111DFBD37E2A502A9B805868/100", "is_yellow_vip":"0", "vip":"0", "yellow_vip_level":"0", "level":"0", "is_yellow_year_vip":"0" }
————————–2017年6月8日12:13:46—————————–
微信登录看这里
新浪微博登录看这里
相关文章推荐
- Android开发技巧之:QQ第三方登录(一)
- Android开发接入第三方原生SDK实现QQ登录
- Android开发技巧之:QQ第三方登录(二)
- 【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
- 【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
- 关于使用QQ、新浪微博、腾讯微博等第三方登录网站的开发过程(一)
- (转)第三方登录(QQ登录)开发流程详解
- Android应用之最新版本SDKV2.4实现QQ第三方登录
- Android开发怎么做第三方登录?
- 【Android应用开发详解】实现第三方授权登录、分享以及获取用户资料
- 关于使用QQ、新浪微博、腾讯微博等第三方登录网站的开发过程(二)
- android,QQ第三方登录
- 第三方登录(QQ登录)开发流程详解
- Android 使用第三方登录(QQ和新浪微博)
- Android开发 QQ sso登录和分享到QQ好友功能,调用本地QQ客户端
- 【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
- 【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
- 腾讯互联QQ登录第三方Android应用
- android开发--第三方平台登录分享问题
- Android实现QQ第三方登录