使用友盟+实现第三方登录(QQ、微信、微博) 本是古典 何须时尚 2022-03-19 18:40 1003阅读 0赞 最近项目中有使用到友盟第三方登录:下面我就把使用友盟第三方登录的步骤分享给大家: 1.第一步:去友盟+官网创建应用,申请获取到appkey。有账号的话直接登录创建即可,无账号注册一个创建应用。 官网链接:[https://www.umeng.com/][https_www.umeng.com] ![友盟+appkey][appkey] 2.第二步:确定可以使用第三方登录的平台。(我这里实现QQ、[微信][Link 1]和新浪微博)。 3.第三步:去[腾讯][Link 2]开放平台申请APP ID 和 APP KEY。步骤和第一步一样的,创建应用。 官网链接:[http://open.qq.com/][http_open.qq.com] ![这里写图片描述][70] 4.第四步:去微信开放平台申请AppID 和 AppSecret。(他这里有个坑,就是一定要是管理员身份的微信扫描二维码才能生成)。 ![这里写图片描述][70 1] 官网链接:[https://open.weixin.qq.com/][https_open.weixin.qq.com] 5.第五步:去新浪微博开放平台申请App Key 和 App Secret在高级信息中设置回调url。 官网链接:[http://open.weibo.com/][http_open.weibo.com] ![这里写图片描述][70 2] 这些步骤全部完成之后,开始初始化友盟sdk的步骤了。 6.下载友盟社会化分享的sdk:把jar包全部导入工程中去。 下载链接:[http://mobile.umeng.com/custom\_sdk][http_mobile.umeng.com_custom_sdk] 点击了链接会出现如下所示:点击一键下载。 ![这里写图片描述][70 3] 下载完成解压后出现如下所示: ![这里写图片描述][70 4] 双击中间的share文件夹: ![这里写图片描述][70 5] 双击友盟集成工具: ![这里写图片描述][70 6] 点击OK,弹出框点击是: ![这里写图片描述][70 7] 会发现多出来一个文件夹: ![这里写图片描述][70 8] 如上所示把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包,然后在包中创建一个: 例子: ![这里写图片描述][70 9] 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.connect.common.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");这些代码就是调用我们自己的[服务器][Link 3]的登录接口。 以上就完成了友盟+的第三方登录。 原文转载自:[https://blog.csdn.net/qq77485042/article/details/79792489][https_blog.csdn.net_qq77485042_article_details_79792489] 我自己做的项目流程与该文章所述流程大同小异,只是有些细节不一样,如有问题可以留言讨论。 [https_www.umeng.com]: https://www.umeng.com/ [appkey]: /images/20220319/7bc3098245144f6b8ef86d2ba4829596.png [Link 1]: https://www.baidu.com/s?wd=%E5%BE%AE%E4%BF%A1&tn=24004469_oem_dg&rsv_dl=gh_pl_sl_csd [Link 2]: https://www.baidu.com/s?wd=%E8%85%BE%E8%AE%AF&tn=24004469_oem_dg&rsv_dl=gh_pl_sl_csd [http_open.qq.com]: http://open.qq.com/ [70]: /images/20220319/0175774382f6412a987832253bf7b718.png [70 1]: /images/20220319/cde9e61aaa3d429880b4776a6761faef.png [https_open.weixin.qq.com]: https://open.weixin.qq.com/ [http_open.weibo.com]: http://open.weibo.com/ [70 2]: /images/20220319/d9387918f3fa4d5eac8bd8fb7effb6ce.png [http_mobile.umeng.com_custom_sdk]: http://mobile.umeng.com/custom_sdk [70 3]: /images/20220319/850fca7023824bc9ab3e6ca5343456ac.png [70 4]: /images/20220319/adfb8b81992743b9b569164db6768609.png [70 5]: /images/20220319/de3e5a4b74674d32821f66368ea494d9.png [70 6]: /images/20220319/b56bffb175224070b10a013d1b6d8f17.png [70 7]: /images/20220319/e2921d8b757843968094cddcea3b1d78.png [70 8]: /images/20220319/aa6312b848e9477588fc428c86c991dc.png [70 9]: /images/20220319/feb002f256f340b7b3fde347efa53008.png [Link 3]: https://www.baidu.com/s?wd=%E6%9C%8D%E5%8A%A1%E5%99%A8&tn=24004469_oem_dg&rsv_dl=gh_pl_sl_csd [https_blog.csdn.net_qq77485042_article_details_79792489]: https://blog.csdn.net/qq77485042/article/details/79792489
还没有评论,来说两句吧...