admin管理员组文章数量:1656398
最近项目中有使用到友盟第三方登录:下面我就把使用友盟第三方登录的步骤分享给大家:
1.第一步:去友盟+官网创建应用,申请获取到appkey。有账号的话直接登录创建即可,无账号注册一个创建应用。
官网链接:https://www.umeng/
2.第二步:确定可以使用第三方登录的平台。(我这里实现QQ、微信和新浪微博)。
3.第三步:去腾讯开放平台申请APP ID 和 APP KEY。步骤和第一步一样的,创建应用。
官网链接:http://open.qq/
4.第四步:去微信开放平台申请AppID 和 AppSecret。(他这里有个坑,就是一定要是管理员身份的微信扫描二维码才能生成)。
官网链接:https://open.weixin.qq/
5.第五步:去新浪微博开放平台申请App Key 和 App Secret在高级信息中设置回调url。
官网链接:http://open.weibo/
这些步骤全部完成之后,开始初始化友盟sdk的步骤了。
6.下载友盟社会化分享的sdk:把jar包全部导入工程中去。
下载链接:http://mobile.umeng/custom_sdk
点击了链接会出现如下所示:点击一键下载。
下载完成解压后出现如下所示:
双击中间的share文件夹:
双击友盟集成工具:
点击OK,弹出框点击是:
会发现多出来一个文件夹:
如上所示把lib中的jar包全部导入项目中去
7.在app中的build.gradle中添加依赖:
compile 'com.umeng.sdk:common:latest.integration'
还需要加入:
allprojects {
repositories {
mavenCentral()
}
}
(混淆规则)
-keep class com.umeng.commonsdk.** {*;}
8.在工程的Application中的onCreate()方法中加入以下代码:
UMConfigure.init(this, "友盟+的appkey", "Shutang", UMConfigure.DEVICE_TYPE_PHONE, "");//最后一个参数为推送时需要用到的
UMShareAPI.get(this);
Config.DEBUG = true;
QueuedWork.isUseThreadPool = false;
//三方获取用户资料时是否每次都要进行授权
UMShareConfig config = new UMShareConfig();
config.isNeedAuthOnGetUserInfo(true);
UMShareAPI.get(this).setShareConfig(config);
PlatformConfig.setWeixin("微信的AppID", "微信的AppSecret");
PlatformConfig.setQQZone("腾讯的APP ID", "腾讯的APP KEY");
PlatformConfig.setSinaWeibo("新浪微博的App Key", "新浪微博的App Secret", "新浪微博的回调url");
9.在项目的清单文件中添加权限:
<!--友盟的权限 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
10.在包名的文件夹直属目录下创建一个wxapi包,然后在包中创建一个:
例子:
package com.stinfo.app.wxapi;
import com.umeng.socialize.weixin.view.WXCallbackActivity;
/**
* Created by DFF on 2018/3/31.
*/
public class WXEntryActivity extends WXCallbackActivity{
}
11.在清单文件中注册回调的Activity:
<!-- 微信 -->
<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!--新浪-->
<activity
android:name="com.umeng.socialize.media.WBShareCallBackActivity"
android:configChanges="keyboardHidden|orientation"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:exported="false"
android:launchMode="singleTask"
android:screenOrientation="portrait" >
</activity>
<activity
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
android:launchMode="singleTask"
android:name="com.sina.weibo.sdk.share.WbShareTransActivity">
<intent-filter>
<action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<!-- qq精简版 -->
<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="tencentappid" />
</intent-filter>
</activity>
<activity
android:name="com.tencent.connectmon.AssistActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- 分享编辑页 -->
<activity
android:name="com.umeng.socialize.editorpage.ShareActivity"
android:excludeFromRecents="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity android:name=".StartActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
12.在登录界面,也就是去获取授权的界面中重写onActivityResult()方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}
以上初始化就基本上完成了:
现在是使用阶段:
此处是我登录界面的点击事件:
case R.id.other_weibo_login://新浪微博登录
UMSharePlatform.loginThirdParty(this, SHARE_MEDIA.SINA, new UMSharePlatform.LoginSuccessCallback() {
@Override
public void getLoginData(String uid) {
mLoginPresenter.thirdPartyLoad(uid, "3");
}
});
break;
case R.id.other_qq_login://QQ登录
UMSharePlatform.loginThirdParty(this, SHARE_MEDIA.QQ, new UMSharePlatform.LoginSuccessCallback() {
@Override
public void getLoginData(String uid) {
mLoginPresenter.thirdPartyLoad(uid, "2");
}
});
break;
case R.id.other_weixin_login://微信登录
UMSharePlatform.loginThirdParty(this, SHARE_MEDIA.WEIXIN, new UMSharePlatform.LoginSuccessCallback() {
@Override
public void getLoginData(String uid) {
mLoginPresenter.thirdPartyLoad(uid, "1");
}
});
break;
这是我封装得回调逻辑:
public class UMSharePlatform {
/**
* 第三方登录
*
* @param activity
* @param media
* @param callback
*/
public static void loginThirdParty(Activity activity, SHARE_MEDIA media, final LoginSuccessCallback callback) {
UMShareAPI.get(activity).getPlatformInfo(activity, media, new UMAuthListener() {
@Override
public void onStart(SHARE_MEDIA share_media) {
Log.e("lee", "onStart授权开始: ");
}
@Override
public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {
callback.getLoginData(map.get("uid"));
//在该回调的map中可以拿到第三方返回的好多信息:比如昵称,头像,性别等等,由于我这里只需要uid所以就只取了uid。
Log.e("lee", "onComplete授权成功: ");
}
@Override
public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {
Log.e("lee", "onError授权异常: ");
}
@Override
public void onCancel(SHARE_MEDIA share_media, int i) {
Log.e("lee", "onCancel授权取消: ");
}
});
}
/**
* 回调接口
*/
public interface LoginSuccessCallback {
/**
* @param uid 第三方平台返回的唯一标识
*/
void getLoginData(String uid);
}
}
mLoginPresenter.thirdPartyLoad(uid, "1");这些代码就是调用我们自己的服务器的登录接口。
以上就完成了友盟+的第三方登录。
本文标签: 第三方
版权声明:本文标题:使用友盟+实现第三方登录 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1729734181a1211604.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论