本文档只针对sdk v4.3版本适用,不适用于sdk v5.0版本
第三方登录主要用于简化用户登录流程,通过用户拥有的微博、QQ、微信等第三方账号进行登录并且构建APP自己的登录账号体系。友盟渠道打包工具
实现第三方登录主要通过下面两步:
目前友盟社会化组件支持的第三方登录平台为:新浪微博、腾讯微博、QQ、QQ空间、微信、人人网、豆瓣、Facebook。
首先在activity页里添加下面的成员变量
UMSocialService mController = UMServiceFactory.getUMSocialService("com.umeng.login");
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) {}
});
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);
}
}
});
确认将sina_jar添加到工程build path路径下 app营销
//设置新浪SSO handlermController.getConfig().setSsoHandler(new SinaSsoHandler());
在对应的activity中实现onActivityResult方法, 并添加如下代码
@Overrideprotected 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中
在新浪微博开放平台申请应用,并且填写应用签名与包名,将申请获取的appkey及secret绑定在友盟主站后台。
//参数1为当前Activity, 参数2为开发者在QQ互联申请的APP ID,参数3为开发者在QQ互联申请的APP kEY.UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(getActivity(), "100424468",
"c7394704798a158208a74ab60104f0ba");
qqSsoHandler.addToSocialSDK();
<!-- ############ 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>
在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();
}
} );
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目录
参照微信分享文档 注册应用及填写签名,并且 申请微信登录权限
// 添加微信平台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。
在微信登录按钮中实现下面的方法
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();
}
} );
注销登录用于清空已经获取的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();
}
}
});
下面是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 |
为了保证引用友盟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.
安智宝 版权所有