700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 使用友盟+实现第三方登录(QQ 微信 微博)

使用友盟+实现第三方登录(QQ 微信 微博)

时间:2023-09-09 16:37:21

相关推荐

使用友盟+实现第三方登录(QQ 微信 微博)

最近项目中有使用到友盟第三方登录:下面我就把使用友盟第三方登录的步骤分享给大家:

1.第一步:去友盟+官网创建应用,申请获取到appkey。有账号的话直接登录创建即可,无账号注册一个创建应用。

官网链接:/

2.第二步:确定可以使用第三方登录的平台。(我这里实现QQ、微信和新浪微博)。

3.第三步:去腾讯开放平台申请APP ID 和 APP KEY。步骤和第一步一样的,创建应用。

官网链接:/

4.第四步:去微信开放平台申请AppID 和 AppSecret。(他这里有个坑,就是一定要是管理员身份的微信扫描二维码才能生成)。

官网链接:https://open./

5.第五步:去新浪微博开放平台申请App Key 和 App Secret在高级信息中设置回调url。

官网链接:/

这些步骤全部完成之后,开始初始化友盟sdk的步骤了。

6.下载友盟社会化分享的sdk:把jar包全部导入工程中去。

下载链接:/custom_sdk

点击了链接会出现如下所示:点击一键下载。

下载完成解压后出现如下所示:

双击中间的share文件夹:

双击友盟集成工具:

点击OK,弹出框点击是:

会发现多出来一个文件夹:

如上所示把lib中的jar包全部导入项目中去

7.在app中的build.gradle中添加依赖:

compile 'com.umeng.sdk:common:latest.integration'

还需要加入:

allprojects {repositories {mavenCentral()}}

(混淆规则)

-keep class monsdk.** {*;}

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 /3/31.*/public class WXEntryActivity extends WXCallbackActivity{}

11.在清单文件中注册回调的Activity:

<!-- 微信 --><activityandroid:name=".wxapi.WXEntryActivity"android:configChanges="keyboardHidden|orientation|screenSize"android:exported="true"android:screenOrientation="portrait"android:theme="@android:style/Theme.Translucent.NoTitleBar" /><!--新浪--><activityandroid: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><activityandroid: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精简版 --><activityandroid: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><activityandroid:name="com.mon.AssistActivity"android:configChanges="orientation|keyboardHidden|screenSize"android:screenOrientation="portrait"android:theme="@android:style/Theme.Translucent.NoTitleBar" /><!-- 分享编辑页 --><activityandroid: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()方法:

@Overrideprotected 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() {@Overridepublic 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() {@Overridepublic void getLoginData(String uid) {mLoginPresenter.thirdPartyLoad(uid, "2");}});break;case R.id.other_weixin_login://微信登录UMSharePlatform.loginThirdParty(this, SHARE_MEDIA.WEIXIN, new UMSharePlatform.LoginSuccessCallback() {@Overridepublic 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() {@Overridepublic void onStart(SHARE_MEDIA share_media) {Log.e("lee", "onStart授权开始: ");}@Overridepublic void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {callback.getLoginData(map.get("uid"));//在该回调的map中可以拿到第三方返回的好多信息:比如昵称,头像,性别等等,由于我这里只需要uid所以就只取了uid。Log.e("lee", "onComplete授权成功: ");}@Overridepublic void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {Log.e("lee", "onError授权异常: ");}@Overridepublic 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");这些代码就是调用我们自己的服务器的登录接口。

以上就完成了友盟+的第三方登录。

原文转载自:/qq77485042/article/details/79792489

我自己做的项目流程与该文章所述流程大同小异,只是有些细节不一样,如有问题可以留言讨论。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。