友盟:4.3版本第三方登录集成

2016-04-02 14:52:27 |发布者: 安智宝

1.  第三方登录概述

本文档只针对sdk v4.3版本适用,不适用于sdk v5.0版本

1.1  第三方登录定义

第三方登录主要用于简化用户登录流程,通过用户拥有的微博、QQ、微信等第三方账号进行登录并且构建APP自己的登录账号体系。友盟渠道打包工具

1.2  实现第三方登录的方法

实现第三方登录主要通过下面两步:

  • 在第三方平台完成授权
  • 获取第三方平台的accesstoken信息及用户资料

1.3  第三方登录支持的平台

目前友盟社会化组件支持的第三方登录平台为:新浪微博、腾讯微博、QQ、QQ空间、微信、人人网、豆瓣、Facebook。

2.  实现OAuth授权

2.1  添加成员变量

首先在activity页里添加下面的成员变量

UMSocialService mController = UMServiceFactory.getUMSocialService("com.umeng.login");

2.2  授权接口

UMSocialService.doOauthVerify(Context context , SHARE_MEDIA platform , UMAuthListener listener)    

接口说明:该接口调用将调出授权页进行授权操作。该接口不支持twitter,G+,易信,来往授权。应用宝下载

以下代码以新浪微博为例:

在新浪微博登录按钮中实现下面的方法,点击按钮则弹出新浪微博登录页面

mController.doOauthVerify(MainActivity.this, SHARE_MEDIA.SINA,new UMAuthListener() {

@Override

public void onError(SocializeException e, SHARE_MEDIA platform) {

}

@Override

public void onComplete(Bundle value, SHARE_MEDIA platform) {

if (value != null && !TextUtils.isEmpty(value.getString("uid"))) {

Toast.makeText(MainActivity.this, "授权成功.", Toast.LENGTH_SHORT).show();

} else {

Toast.makeText(MainActivity.this, "授权失败", Toast.LENGTH_SHORT).show();

}

}

@Override

public void onCancel(SHARE_MEDIA platform) {}

@Override

public void onStart(SHARE_MEDIA platform) {}

});

2.3  获取accesstoken及用户资料

UMSocialService.getPlatformInfo(Context context , SHARE_MEDIA platform , UMDataListener listener) 

接口说明:获取已授权平台的用户信息,accesstoken等信息。该接口不支持twitter,G+,易信,来往。

以下代码以新浪微博为例:

mController.getPlatformInfo(MainActivity.this, SHARE_MEDIA.SINA, new UMDataListener() {

@Override

public void onStart() {

Toast.makeText(MainActivity.this, "获取平台数据开始...", Toast.LENGTH_SHORT).show();

}

@Override

public void onComplete(int status, Map<String, Object> info) {

if(status == 200 && info != null){

StringBuilder sb = new StringBuilder();

Set<String> keys = info.keySet();

for(String key : keys){

sb.append(key+"="+info.get(key).toString()+"\r\n");

}

Log.d("TestData",sb.toString());

}else{

Log.d("TestData","发生错误:"+status);

}

}

});

2.4  新浪微博SSO登录方法

2.4.1  添加需要的文件

确认将sina_jar添加到工程build path路径下    app营销

2.4.2  配置sina SSO(免登录)开关

//设置新浪SSO handler

mController.getConfig().setSsoHandler(new SinaSsoHandler());

2.4.3  添加相关回调

在对应的activity中实现onActivityResult方法, 并添加如下代码

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

/**使用SSO授权必须添加如下代码 */

UMSsoHandler ssoHandler = mController.getConfig().getSsoHandler(requestCode);

if(ssoHandler != null){

ssoHandler.authorizeCallBack(requestCode, resultCode, data);

}

}

注意onActivityResult方法必须写在分享所在的Activity或fragment依赖的Activity中,不可以直接写在fragment中

2.4.4  填写签名与包名

在新浪微博开放平台申请应用,并且填写应用签名与包名,将申请获取的appkey及secret绑定在友盟主站后台。

2.5  实现QQ登录

2.5.1  添加相关文件

  • 解压已下载的zip文件,将platforms/qq_zone/libs中SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar拷贝到工程的libs(如果没有此目录,新建libs目录)目录中。 鼠标右键-->Add to Build Path。
  • 将解压目录中platforms/qq_zone/res文件拷贝至你工程res目录

2.5.2  添加配置代码

//参数1为当前Activity, 参数2为开发者在QQ互联申请的APP ID,参数3为开发者在QQ互联申请的APP kEY.

UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(getActivity(), "100424468",

"c7394704798a158208a74ab60104f0ba");

qqSsoHandler.addToSocialSDK();

2.5.3  修改Android manifest XML中的配置

<!-- ############ QQ空间和QQ SSO授权的Activity注册 ############ -->

<activity

android:name="com.tencent.tauth.AuthActivity"

android:launchMode="singleTask"

android:noHistory="true" >

<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你的QQ互联APPID" />

</intent-filter>

</activity>

<activity android:name="com.tencent.connect.common.AssistActivity"

android:theme="@android:style/Theme.Translucent.NoTitleBar"

android:screenOrientation="portrait">

</activity>

2.5.4  实现授权及获取用户资料

在QQ登录按钮中实现下面的方法

mController.doOauthVerify(mContext, SHARE_MEDIA.QQ, new UMAuthListener() {

@Override

public void onStart(SHARE_MEDIA platform) {

Toast.makeText(mContext, "授权开始", Toast.LENGTH_SHORT).show();

}

@Override

public void onError(SocializeException e, SHARE_MEDIA platform) {

Toast.makeText(mContext, "授权错误", Toast.LENGTH_SHORT).show();

}

@Override

public void onComplete(Bundle value, SHARE_MEDIA platform) {

Toast.makeText(mContext, "授权完成", Toast.LENGTH_SHORT).show();

//获取相关授权信息

mController.getPlatformInfo(MainActivity.this, SHARE_MEDIA.QQ, new UMDataListener() {

@Override

public void onStart() {

Toast.makeText(MainActivity.this, "获取平台数据开始...", Toast.LENGTH_SHORT).show();

}

@Override

public void onComplete(int status, Map<String, Object> info) {

if(status == 200 && info != null){

StringBuilder sb = new StringBuilder();

Set<String> keys = info.keySet();

for(String key : keys){

sb.append(key+"="+info.get(key).toString()+"\r\n");

}

Log.d("TestData",sb.toString());

}else{

Log.d("TestData","发生错误:"+status);

}

}

});

}

@Override

public void onCancel(SHARE_MEDIA platform) {

Toast.makeText(mContext, "授权取消", Toast.LENGTH_SHORT).show();

}

} );

2.6  实现微信登录

2.6.1  添加微信相关文件

1 解压已下载的zip文件,将platforms/weixin/libs中SocialSDK_WeiXin_1.jar,SocialSDK_WeiXin_2.jar拷贝到工程的libs(如果没有此目录,新建libs目录)目录中.    无线营销

2 在libs目录中找到SocialSDK_WeiXin_1.jar,SocialSDK_WeiXin_2.jar文件,鼠标右键-->Add to Build Path.

3 将解压目录中platforms/weixin/res拷贝至你工程的res目录

2.6.2  申请微信登录权限

参照微信分享文档 注册应用及填写签名,并且 申请微信登录权限

2.6.3  添加微信配置

// 添加微信平台

UMWXHandler wxHandler = new UMWXHandler(getActivity(),appId,appSecret);

wxHandler.addToSocialSDK();

在AndroidManifest.xml中下注册下面的回调Activity, 直接复制到Android manifest XML 即可,不需要进行修改

<activity

android:name=".wxapi.WXEntryActivity"

android:theme="@android:style/Theme.Translucent.NoTitleBar"

android:configChanges="keyboardHidden|orientation|screenSize"

android:exported="true"

android:screenOrientation="portrait" />

将SDK包weixin目录下的wxapi文件夹拷贝到您的工程的包目录下, 然后修改WXEntryActivity的完整路径即可。 例如social_sdk_example的包名为com.umeng.soexample,因此将wxapi文件夹拷贝到com.umeng.soexample下,最终WXEntryActivity的 完整路径为com.umeng.soexample.wxapi.WXEntryActivity。

2.6.4  实现授权及获取用户资料

在微信登录按钮中实现下面的方法

mController.doOauthVerify(mContext, SHARE_MEDIA.WEIXIN, new UMAuthListener() {

@Override

public void onStart(SHARE_MEDIA platform) {

Toast.makeText(mContext, "授权开始", Toast.LENGTH_SHORT).show();

}

@Override

public void onError(SocializeException e, SHARE_MEDIA platform) {

Toast.makeText(mContext, "授权错误", Toast.LENGTH_SHORT).show();

}

@Override

public void onComplete(Bundle value, SHARE_MEDIA platform) {

Toast.makeText(mContext, "授权完成", Toast.LENGTH_SHORT).show();

//获取相关授权信息

mController.getPlatformInfo(MainActivity.this, SHARE_MEDIA.WEIXIN, new UMDataListener() {

@Override

public void onStart() {

Toast.makeText(MainActivity.this, "获取平台数据开始...", Toast.LENGTH_SHORT).show();

}

@Override

public void onComplete(int status, Map<String, Object> info) {

if(status == 200 && info != null){

StringBuilder sb = new StringBuilder();

Set<String> keys = info.keySet();

for(String key : keys){

sb.append(key+"="+info.get(key).toString()+"\r\n");

}

Log.d("TestData",sb.toString());

}else{

Log.d("TestData","发生错误:"+status);

}

}

});

}

@Override

public void onCancel(SHARE_MEDIA platform) {

Toast.makeText(mContext, "授权取消", Toast.LENGTH_SHORT).show();

}

} );

3.  注销登录的方法

注销登录用于清空已经获取的accesstoken信息,注销之后,下次用户需要重新输入密码完成登录过程。应用推广

以新浪微博为例,注销新浪微博登录方法为:

mController.deleteOauth(mContext, SHARE_MEDIA.SINA,

new SocializeClientListener() {

@Override

public void onStart() {

}

@Override

public void onComplete(int status, SocializeEntity entity) {

if (status == 200) {

Toast.makeText(mContext, "删除成功.",

Toast.LENGTH_SHORT).show();

} else {

Toast.makeText(mContext, "删除失败",

Toast.LENGTH_SHORT).show();

}

}

});

4.  平台jar文件对应列表

5.  应用信息注册地址列表

下面是Social SDK不同平台应用信息注册网站的地址:

平台jar文件
腾讯微博SocialSDK_TencentWB_1.jar,SocialSDK_TencentWB_2.jar
QQ、QQ空间SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar
微信好友SocialSDK_WeiXin_1.jar,SocialSDK_WeiXin_2.jar

6.  混淆

为了保证引用友盟Social SDK jar文件以及腾讯jar文件被混淆,请在proguard.cfg文件中添加以下代码避免被混淆.

-dontshrink

-dontoptimize

-dontwarn com.google.android.maps.**

-dontwarn android.webkit.WebView

-dontwarn com.umeng.**

-dontwarn com.tencent.weibo.sdk.**

-dontwarn com.facebook.**

-keep enum com.facebook.**

-keepattributes Exceptions,InnerClasses,Signature

-keepattributes *Annotation*

-keepattributes SourceFile,LineNumberTable

-keep public interface com.facebook.**

-keep public interface com.tencent.**

-keep public interface com.umeng.socialize.**

-keep public interface com.umeng.socialize.sensor.**

-keep public interface com.umeng.scrshot.**

-keep public class com.umeng.socialize.* {*;}

-keep public class javax.**

-keep public class android.webkit.**

-keep class com.facebook.**

-keep class com.umeng.scrshot.**

-keep public class com.tencent.** {*;}

-keep class com.umeng.socialize.sensor.**

-keep class com.tencent.mm.sdk.modelmsg.WXMediaMessage {*;}

-keep class com.tencent.mm.sdk.modelmsg.** implements com.tencent.mm.sdk.modelmsg.WXMediaMessage$IMediaObject {*;}

-keep class im.yixin.sdk.api.YXMessage {*;}

-keep class im.yixin.sdk.api.** implements im.yixin.sdk.api.YXMessage$YXMessageData{*;}

-keep public class [your_pkg].R$*{

public static final int *;

}

平台网址
新浪微博http://open.weibo.com
QQ、QQ空间http://open.qq.com/
微信好友http://open.weixin.qq.com
人人http://dev.renren.com
豆瓣http://developers.douban.com


关于安智宝

    安智宝是主打效果的安卓应用推广平台。通过安智宝,用户可以通过自助方式 进行应用推广。作为效果性的推广平台,安智宝利用云技术智能的进行渠道匹 配,对渠道的高效利用,节约用户的每一分钱。用户可以精确的控制应用投放 每天的投放量、渠道质量(留存率等),做到覆盖广、活跃度高、控制精准。

联系客服

Copyright © 2016 - 2020 anzhibao.com . All Right Reserved.

安智宝  版权所有