如何实现android第三方支付登录

友盟实现第三方登录 - 简书
友盟实现第三方登录
第一步 下载sdk
/social/ios/sdk-download?spm=0.0.0.0.nGfVZk
第二步 修改info.plist文件 适配ios9
HTTP传输安全
以iOS9 SDK编译的工程会默认以SSL安全协议进行网络传输,即HTTPS,如果依然使用HTTP协议请求网络会报系统异常并中断请求。目前可用如下两种方式保持用HTTP进行网络连接:
A、在info.plist中加入安全域名白名单(右键info.plist用source code打开)
&key&NSAppTransportSecurity&/key&
&key&NSExceptionDomains&/key&
&key&&/key&
&key&NSIncludesSubdomains&/key&
&key&NSTemporaryExceptionAllowsInsecureHTTPLoads&/key&
&key&NSTemporaryExceptionMinimumTLSVersion&/key&
&string&TLSv1.1&/string&
&key&&/key&
&key&NSIncludesSubdomains&/key&
&key&NSTemporaryExceptionAllowsInsecureHTTPLoads&/key&
&key&NSTemporaryExceptionMinimumTLSVersion&/key&
&string&TLSv1.1&/string&
&!-- 集成新浪微博对应的HTTP白名单--&
&key&&/key&
&key&NSIncludesSubdomains&/key&
&key&NSThirdPartyExceptionRequiresForwardSecrecy&/key&
&key&&/key&
&key&NSIncludesSubdomains&/key&
&key&NSThirdPartyExceptionRequiresForwardSecrecy&/key&
&key&&/key&
&key&NSIncludesSubdomains&/key&
&key&NSThirdPartyExceptionAllowsInsecureHTTPLoads&/key&
&key&NSThirdPartyExceptionRequiresForwardSecrecy&/key&
&key&&/key&
&key&NSIncludesSubdomains&/key&
&key&NSThirdPartyExceptionAllowsInsecureHTTPLoads&/key&
&key&NSThirdPartyExceptionRequiresForwardSecrecy&/key&
&key&&/key&
&key&NSIncludesSubdomains&/key&
&key&NSThirdPartyExceptionAllowsInsecureHTTPLoads&/key&
&key&NSThirdPartyExceptionRequiresForwardSecrecy&/key&
&key&.cn&/key&
&key&NSIncludesSubdomains&/key&
&key&NSThirdPartyExceptionAllowsInsecureHTTPLoads&/key&
&key&NSThirdPartyExceptionRequiresForwardSecrecy&/key&
&!-- 新浪微博--&
&!-- 集成微信、QQ、Qzone、腾讯微博授权对应的HTTP白名单--&
&key&&/key&
&key&NSIncludesSubdomains&/key&
&key&NSThirdPartyExceptionAllowsInsecureHTTPLoads&/key&
&key&NSThirdPartyExceptionRequiresForwardSecrecy&/key&
&!-- 腾讯授权--&
&!-- 集成人人授权对应的HTTP白名单--&
&key&&/key&
&key&NSIncludesSubdomains&/key&
&key&NSThirdPartyExceptionAllowsInsecureHTTPLoads&/key&
&key&NSThirdPartyExceptionRequiresForwardSecrecy&/key&
&!-- 人人授权--&
&!-- 集成Facebook授权对应的HTTP白名单--&
&key&&/key&
&key&NSIncludesSubdomains&/key&
&key&NSExceptionRequiresForwardSecrecy&/key&
&key&fbcdn.net&/key&
&key&NSIncludesSubdomains&/key&
&key&NSExceptionRequiresForwardSecrecy&/key&
&key&akamaihd.net&/key&
&key&NSIncludesSubdomains&/key&
&key&NSExceptionRequiresForwardSecrecy&/key&
&!-- Facebook授权--&
&!-- 集成Twitter授权对应的HTTP白名单--&
&key&&/key&
&key&NSIncludesSubdomains&/key&
&key&NSExceptionRequiresForwardSecrecy&/key&
&!-- Twitter授权--&
注:以上部分平台官方未给出相应白名单,由技术人员测试各个平台所收集而来,如果有所遗漏,请自行加入并向客服说明,我们会进一步补充名单。
B、在info.plist的NSAppTransportSecurity下新增NSAllowsArbitraryLoads并设置为YES,指定所有HTTP连接都可正常请求 /social/ios/ios9
&key&NSAppTransportSecurity&/key&
&key&NSAllowsArbitraryLoads&/key&
应用跳转(SSO等)
如果你的应用使用了如SSO授权登录或跳转分享功能,在iOS9下就需要增加一个可跳转的白名单,指定对应跳转App的URL Scheme,否则将在第三方平台判断是否跳转时用到的canOpenURL时返回NO,进而只进行webview授权或授权/分享失败。
同样在info.plist增加:
&key&LSApplicationQueriesSchemes&/key&
&!-- 微信 URL Scheme 白名单--&
&string&wechat&/string&
&string&weixin&/string&
&!-- 新浪微博 URL Scheme 白名单--&
&string&sinaweibohd&/string&
&string&sinaweibo&/string&
&string&sinaweibosso&/string&
&string&weibosdk&/string&
&string&weibosdk2.5&/string&
&!-- QQ、Qzone URL Scheme 白名单--&
&string&mqqapi&/string&
&string&mqq&/string&
&string&mqqOpensdkSSoLogin&/string&
&string&mqqconnect&/string&
&string&mqqopensdkdataline&/string&
&string&mqqopensdkgrouptribeshare&/string&
&string&mqqopensdkfriend&/string&
&string&mqqopensdkapi&/string&
&string&mqqopensdkapiV2&/string&
&string&mqqopensdkapiV3&/string&
&string&mqzoneopensdk&/string&
&string&wtloginmqq&/string&
&string&wtloginmqq2&/string&
&string&mqqwpa&/string&
&string&mqzone&/string&
&string&mqzonev2&/string&
&string&mqzoneshare&/string&
&string&wtloginqzone&/string&
&string&mqzonewx&/string&
&string&mqzoneopensdkapiV2&/string&
&string&mqzoneopensdkapi19&/string&
&string&mqzoneopensdkapi&/string&
&string&mqqbrowser&/string&
&string&mttbrowser&/string&
&!-- 支付宝 URL Scheme 白名单--&
&string&alipay&/string&
&string&alipayshare&/string&
&!-- 人人 URL Scheme 白名单--&
&string&renrenios&/string&
&string&renrenapi&/string&
&string&renren&/string&
&string&renreniphone&/string&
&!-- 来往 URL Scheme 白名单--&
&string&laiwangsso&/string&
&!-- 易信 URL Scheme 白名单--&
&string&yixin&/string&
&string&yixinopenapi&/string&
&!-- instagram URL Scheme 白名单--&
&string&instagram&/string&
&!-- whatsapp URL Scheme 白名单--&
&string&whatsapp&/string&
&!-- line URL Scheme 白名单--&
&string&line&/string&
&!-- Facebook URL Scheme 白名单--&
&string&fbapi&/string&
&string&fb-messenger-api&/string&
&string&fbauth2&/string&
&string&fbshareextension&/string&
注:以上部分平台官方未给出相应白名单,由技术人员测试各个平台所收集而来,如果有所遗漏,请自行加入并向客服说明,我们会进一步补充名单。
第三步 集成UMSDK
解压SDK压缩包,将形如UMSocial_Sdk_x.x.x,UMSocial_Sdk_Extra_Frameworks的文件夹拖入工程目录。编译。如果报错就添加需要的framwork。
添加系统需要的framework
添加SDK后需要手动添加系统库SystemConfiguration.framework
在other linker flags增加-ObjC 选项,并添加ImageIO 系统framework(实现新浪微博必须完成的步骤)
添加SDK依赖的系统库文件
在Xcode中打开工程配置文件,选择“summary”一栏。在“summary”中选择“Linked Frameworks and Libraries”一栏,点击“+”图标添加下面八个库文件,分别是
Security.framework
libiconv.dylib
SystemConfiguration.framework
CoreGraphics.Framework
libsqlite3.dylib
CoreTelephony.framework
libstdc++.dylib
libz.dylib
设置友盟appkey
获取友盟Appkey。如果你之前已经在友盟注册了应用,获得了Appkey,可以继续使用之前获得Appkey。
如果你尚未在友盟注册账号,需要先注册,注册之后登录你的账号,点击添加新应用,完成新应用填写之后,将进入应用管理页面。在该页面就能得到Appkey。
在代码中设置你的友盟Appkey,在 AppDelegate文件内设置你的AppKey:
#import "UMSocial.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
[UMSocialData setAppKey:@"507fcab00010"];
配置第三方APPID
这里只列出最常用的微信、QQ及新浪微博的配置方法,其他平台如Facebook等请参考对应文档配置, 申请平台APPID请直接参考文档申请第三方账号
在APPdelegate.m文件中增加对应下面的配置
#import "UMSocial.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
//设置友盟社会化组件appkey
[UMSocialData setAppKey:UmengAppkey];
//设置微信AppId、appSecret,分享url
[UMSocialWechatHandler setWXAppId:@"wxd930ea5d5a258f4f" appSecret:@"db426aa0dcac7b" url:@"/social"];
//设置手机QQ 的AppId,Appkey,和分享URL,需要#import "UMSocialQQHandler.h"
[UMSocialQQHandler setQQWithAppId:@"" appKey:@"caab60104f0ba" url:@"/social"];
//打开新浪微博的SSO开关,设置新浪微博回调地址,这里必须要和你在新浪微博后台设置的回调地址一致。需要 #import "UMSocialSinaSSOHandler.h"
[UMSocialSinaSSOHandler openNewSinaSSOWithAppKey:@""
secret:@"04b48b094faeb24ebdad"
RedirectURL:@"/sina2/callback"];
第四步 平台
url scheme设置格式
“wb”+新浪appkey,例如“wb”
微信应用appId,例如“wxd9a39c”,微信详细集成步骤参考微信集成方法
QQ、QQ空间
需要添加两个URL schemes 1. “QQ”+腾讯QQ互联应用appId转换成十六进制(不足8位前面补0),例如“QQ05FC5B14”,注意大写,生成十六进制方法:点击链接,2.“tencent“+腾讯QQ互联应用Id,例如“tencent" ,QQ及Qzone详细集成步骤参考手机QQ集成方法
集成最新Facebook SDK在iOS7.0以上有效,若要使用我们提供的facebook分享需要设置“fb”+facebook AppID,例如“fb9601”,详细集成方法见集成facebook
上午10.29.59.png
第五步 登录调用
第三方登录概述
第三方登录主要用于简化用户登录流程,通过用户拥有的微博、QQ、微信等第三方账号进行登录并且构建APP自己的登录账号体系。
实现第三方登录主要通过下面两步:
在第三方平台完成授权
获取第三方平台用户资料
第三方登录所需要的相关库文件、第三方APPID及相关配置都与分享完全一致,请直接参考分享对应文档配置
开发者无需关心access_token的有效性,使用我们的登录接口可以直接返回对应的用户资料,登录体系中只需要将这些用户资料(包括用户id)管理起来即可
第三方登录支持的平台
目前友盟社会化组件支持的第三方登录平台为:新浪微博、微信、QQ、QQ空间、腾讯微博、人人网、豆瓣、Facebook、Twitter
新浪微博登录
在AppDelegate中添加回调方法
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
BOOL result = [UMSocialSnsService handleOpenURL:url];
if (result == FALSE) {
//调用其他SDK,例如支付宝SDK等
在新浪微博登录按钮中实现下面的方法
UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToSina];
snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){
获取微博用户名、uid、token等
if (response.responseCode == UMSResponseCodeSuccess) {
NSDictionary *dict = [UMSocialAccountManager socialAccountDictionary];
UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:snsPlatform.platformName];
NSLog(@"\nusername = %@,\n usid = %@,\n token = %@ iconUrl = %@,\n unionId = %@,\n thirdPlatformUserProfile = %@,\n thirdPlatformResponse = %@ \n, message = %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL, snsAccount.unionId, response.thirdPlatformUserProfile, response.thirdPlatformResponse, response.message);
所有的平台用户信息都在thirdPlatformUserProfile中返回
删除授权调用下面的方法
[[UMSocialDataService defaultDataService] requestUnOauthWithType:UMShareToSina
completion:^(UMSocialResponseEntity *response){
NSLog(@"response is %@",response);
QQ及Qzone登录
QQ登录只支持SSO登录方式,必须具备手机QQ客户端,Qzone默认调用SSO登录
添加配置文件参考文档:添加QQ及Qzone,添加相关库文件,配置URL schemes及添加系统回调
在AppDelegate应用入口方法添加下面的方法
//设置分享到QQ/Qzone的应用Id,和分享url 链接
#import "UMSocialQQHandler.h"
[UMSocialQQHandler setQQWithAppId:@"" appKey:@"caab60104f0ba" url:@"/social"];
在QQ登录按钮中实现下面的方法
UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToQQ];
snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){
获取微博用户名、uid、token等
if (response.responseCode == UMSResponseCodeSuccess) {
NSDictionary *dict = [UMSocialAccountManager socialAccountDictionary];
UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:snsPlatform.platformName];
NSLog(@"\nusername = %@,\n usid = %@,\n token = %@ iconUrl = %@,\n unionId = %@,\n thirdPlatformUserProfile = %@,\n thirdPlatformResponse = %@ \n, message = %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL, snsAccount.unionId, response.thirdPlatformUserProfile, response.thirdPlatformResponse, response.message);
所有的平台用户信息都在thirdPlatformUserProfile中返回
Qzone登录将UMShareToQQ替换为UMShareToQzone即可
添加配置文件参考文档:添加微信及朋友圈,添加相关库文件,配置URL schemes及添加系统回调
注意微信登录必须先在微信开放平台申请微信登录权限
在你的程序APPdelegate入口方法添加下面的代码
#import "UMSocialWechatHandler.h"
//设置微信AppId、appSecret,分享url
[UMSocialWechatHandler setWXAppId:@"wxd930ea5d5a258f4f" appSecret:@"db426aa0dcac7b" url:@"/social"];
在微信登录按钮中实现下面的方法
UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToWechatSession];
snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){
if (response.responseCode == UMSResponseCodeSuccess) {
NSDictionary *dict = [UMSocialAccountManager socialAccountDictionary];
UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:snsPlatform.platformName];
NSLog(@"\nusername = %@,\n usid = %@,\n token = %@ iconUrl = %@,\n unionId = %@,\n thirdPlatformUserProfile = %@,\n thirdPlatformResponse = %@ \n, message = %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL, snsAccount.unionId, response.thirdPlatformUserProfile, response.thirdPlatformResponse, response.message);
所有的平台用户信息都在thirdPlatformUserProfile中返回
删掉授权信息
[[UMSocialDataService defaultDataService] requestUnOauthWithType:UMShareToSina
completion:^(UMSocialResponseEntity *response){
NSLog(@"response is %@",response);主题 : 第三方登录大家是怎样做的
级别: 新手上路
可可豆: 38 CB
威望: 40 点
在线时间: 206(时)
发自: Web Page
第三方登录大家是怎样做的&&&
是用那种集成各个平台的第三方sdk,还是到各个平台去分别申请,现在知道一个shareSDK可以做但是要导入80多兆的类库,这样程序会不会太大,有没有其他的sdk
&
级别: 新手上路
UID: 239112
可可豆: 510 CB
威望: 234 点
在线时间: 94(时)
发自: Web Page
shareSDK里面也不用全部都导入,只导入需要的第三方库就可以了.比方你只要新浪微博的,那只导入新浪微博的framework就OK
级别: 新手上路
可可豆: 38 CB
威望: 40 点
在线时间: 206(时)
发自: Web Page
/iOS%E5%AE%9E%E7%8E%B0%E7%AC%AC%E4%B8%89%E6%96%B9%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95shareSDK的第三方登录和分享不太一样,在导入之前framework后,还需要导入Parse官网中的Parse.framework这个东西,这个东西是80多兆,而且这个不是shareSDK的东西,不能选平台什么的,所以说会让程序太大
级别: 新手上路
UID: 239112
可可豆: 510 CB
威望: 234 点
在线时间: 94(时)
发自: Web Page
看看编译之后的结果吧,估计不会这么大,我昨天导了 20多M的库,打包后整个APP只有 4M多
级别: 新手上路
可可豆: 0 CB
威望: 0 点
在线时间: 7(时)
发自: Web Page
可以使用百度分享的,或者是友盟的,这两个都可以的。官网上都有demo
级别: 新手上路
可可豆: 38 CB
威望: 40 点
在线时间: 206(时)
发自: Web Page
您好,您有百度第三方登录的Demo么
今天我弄了一上午在百度社会化登录下载下来的都是ipa文件,谢谢啦
级别: 新手上路
可可豆: 0 CB
威望: 0 点
在线时间: 7(时)
发自: Web Page
有百度分享的demo,怎么给你呢?
级别: 侠客
UID: 459313
可可豆: 198 CB
威望: 154 点
在线时间: 449(时)
发自: Web Page
可以看看这个,还不错,原生的SDK实现。一句block就能实现
关注本帖(如果有新回复会站内信通知您)
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 关注CVP公众号
扫一扫 浏览移动版主题信息(必填)
主题描述(最多限制在50个字符)
申请人信息(必填)
申请信息已提交审核,请注意查收邮件,我们会尽快给您反馈。
如有疑问,请联系
CSDN &《程序员》研发主编,投稿&纠错等事宜请致邮
你只管努力,剩下的交给时光!
如今的编程是一场程序员和上帝的竞赛,程序员要开发出更大更好、傻瓜都会用到软件。而上帝在努力创造出更大更傻的傻瓜。目前为止,上帝是赢的。个人网站:。个人QQ群:、
个人大数据技术博客:
在我们常用的App中经常会看到分享与第三方登录的功能,可以说分享与第三方登录已经成为了各大APP的必备功能。对于产品运行与推广来说,分享与第三方登录不仅能加强用户粘性,增加流量及新用户,也能提升用户存、留优化产品质量等。react-native-android-share各大平台都有对应的开发平台来提供分享与第三方登录的服务,比如微信开发平台/腾讯开发平台、新浪开发者平台等。因为各大平台及相关SDK存在很大的差异,单独集成起来比较繁琐,为了快速集成分享与第三方登录我们可以使用相应统一的服务提供商,常用的分享与登录的提供商有umeng与shareSdk。2577人阅读
android(7)
实现QQ、微信、新浪微博和百度第三方登录(Android Studio)
对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于第三方登录的实现,并拿出来与大家一同分享;
各大开放平台注册账户获取AppKey和AppSecret&
Mob开放平台地址:&
QQ开放平台地址:&
新浪微博开放平台地址:&
开放平台地址:&
百度开放平台地址:
一、关于各大开放平台的开发者用户注册和创建应用获取AppKey、AppSecret我就不多说了,对于大家来说这都so easy;&
二、Eclipse在创建应用填写包名应该是manifest里面的packpage:&
studio的则是build.gradle里面的applicationId:&
一般情况下,studio的applicationId和manifest下的包名是一致的,但是applicationId是手动改变的,所以注意在创建应用的时候,要使用applicationId。
新浪微博第三方登录实现:
在做新浪微博第三方登录的时候,参考他们的api文档,感觉他们的api文档写的特别的乱,并且下载的Demo运行还报错,以至于浪费了我大半天的时间,去网上搜了几篇关于第三方登录的文章,写的并不全,时代也比较久远,并且基本没有相关Demo下载,有的就是拷贝的新浪微博的开放平台的原文,我也是醉了…..&
由于时间比较紧迫,所以并没有再继续深究下去。大家应该都知道有许多平台把例如分享、登录等功能集成好了,实现功能十分简单,这一次我是利用的Mob平台&实现的新浪微博第三方登录,感觉还不错实现起来比较简单。
一、下载Mob平台的SDK&
首先下载SDK,得到我们需要的资源
SDK地址(),下载下来发现无法解压(你们可以试一下),联系他们客服,他们说:上传错误,就给我发了一个。我把它和我的Dmeo放在一起,可供下载。&
找到ShareSDK for&包下的QuickIntegrater.jar文件双击:&
感觉还不错,各大平台都有,只需要选择新浪微博就可以(我感觉还是没包装过的比较好,所以另外三种登录方式没采用这种方法),解压之后生成一个Sample文件:&
我们需要把里面的东西全部拿到我们的studio项目中,libs、res和src里面的全部拷贝复制就可以,studio新建assets的方法和Eclipse不一样,所以给大家发个图:&
点击创建就可以了,再把assets下的ShareSDK.xml拷贝就去;
其次配置ShareSDK&
把ShareSDK拷贝进去之后,我们需要把ShareSDK.xml文件中关于Mob(ShareSDK)和新浪微博(SinaWeibo)的Appkey、AppSecret和RedirectUrl替换成我们申请的值,如下图:&
把红箭头中的ShareSDK中的AppKey换成我们在Mob后台申请的AppKey;&
红框框中的SinaWeibo中的AppKey、AppSecret和RedirectUrl换成我们在新浪微博后台申请的对应的值;&
RedirectUrl这个字段的值就是我们后台项目中的应用信息——&高级信息——&OAuth2.0 授权设置中的授权回调页这个字段,需要我们填写一个有效的地址就可以,例如下图:
注:如果RedirectUrl这个字段不填或填写不对会报以下错误:&
二、配置AndroidManifest.xml&
添加activity信息
&code class=&hljs xml has-numbering& style=&display: padding: 0 color: box-sizing: border- font-family: 'Source Code Pro',font-size: white-space: border-radius: 0 word-wrap: background:&&&span class=&hljs-tag& style=&color: rgb(0, 102, 102); box-sizing: border-&&&&span class=&hljs-title& style=&box-sizing: border- color: rgb(0, 0, 136);&&activity
&span class=&hljs-attribute& style=&box-sizing: border- color: rgb(102, 0, 102);&&android:name&/span&=&span class=&hljs-value& style=&box-sizing: border- color: rgb(0, 136, 0);&&&com.mob.tools.MobUIShell&&/span&
&span class=&hljs-attribute& style=&box-sizing: border- color: rgb(102, 0, 102);&&android:theme&/span&=&span class=&hljs-value& style=&box-sizing: border- color: rgb(0, 136, 0);&&&@android:style/Theme.Translucent.NoTitleBar&&/span&
&span class=&hljs-attribute& style=&box-sizing: border- color: rgb(102, 0, 102);&&android:configChanges&/span&=&span class=&hljs-value& style=&box-sizing: border- color: rgb(0, 136, 0);&&&keyboardHidden|orientation|screenSize&&/span&
&span class=&hljs-attribute& style=&box-sizing: border- color: rgb(102, 0, 102);&&android:screenOrientation&/span&=&span class=&hljs-value& style=&box-sizing: border- color: rgb(0, 136, 0);&&&portrait&&/span&
&span class=&hljs-attribute& style=&box-sizing: border- color: rgb(102, 0, 102);&&android:windowSoftInputMode&/span&=&span class=&hljs-value& style=&box-sizing: border- color: rgb(0, 136, 0);&&&stateHidden|adjustResize&&/span& &&/span&
&span class=&hljs-tag& style=&color: rgb(0, 102, 102); box-sizing: border-&&&/&span class=&hljs-title& style=&box-sizing: border- color: rgb(0, 0, 136);&&activity&/span&&&/span&&/code&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align: background-color: rgb(238, 238, 238);&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&li style=&box-sizing: border- padding: 0px 5&&2&/li&&li style=&box-sizing: border- padding: 0px 5&&3&/li&&li style=&box-sizing: border- padding: 0px 5&&4&/li&&li style=&box-sizing: border- padding: 0px 5&&5&/li&&li style=&box-sizing: border- padding: 0px 5&&6&/li&&li style=&box-sizing: border- padding: 0px 5&&7&/li&&/ul&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align: background-color: rgb(238, 238, 238);&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&li style=&box-sizing: border- padding: 0px 5&&2&/li&&li style=&box-sizing: border- padding: 0px 5&&3&/li&&li style=&box-sizing: border- padding: 0px 5&&4&/li&&li style=&box-sizing: border- padding: 0px 5&&5&/li&&li style=&box-sizing: border- padding: 0px 5&&6&/li&&li style=&box-sizing: border- padding: 0px 5&&7&/li&&/ul&
二、添加代码&
首先是Mob的授权,在程序的入口处添加授权代码:
&code class=&hljs cs has-numbering& style=&display: padding: 0 color: box-sizing: border- font-family: 'Source Code Pro',font-size: white-space: border-radius: 0 word-wrap: background:&&&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&//Mob平台授权&/span&
ShareSDK.initSDK(&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&this&/span&);&/code&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align: background-color: rgb(238, 238, 238);&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&li style=&box-sizing: border- padding: 0px 5&&2&/li&&/ul&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align: background-color: rgb(238, 238, 238);&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&li style=&box-sizing: border- padding: 0px 5&&2&/li&&/ul&
其次直接调用thirdSinaLogin()方法就可以了:
&code class=&hljs java has-numbering& style=&display: padding: 0 color: box-sizing: border- font-family: 'Source Code Pro',font-size: white-space: border-radius: 0 word-wrap: background:&&&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&//-----------------------------------------------------新浪微博授权相关--------------&/span&
&span class=&hljs-javadoc& style=&color: rgb(136, 0, 0); box-sizing: border-&&/** 新浪微博授权、获取用户信息页面 */&/span&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&private&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&void&/span& &span class=&hljs-title& style=&box-sizing: border-&&thirdSinaLogin&/span&() {
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&//初始化新浪平台&/span&
Platform pf = ShareSDK.getPlatform(MainActivity.&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&this&/span&, SinaWeibo.NAME);
pf.SSOSetting(&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&true&/span&);
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&//设置监听&/span&
pf.setPlatformActionListener(MainActivity.&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&this&/span&);
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&//获取登陆用户的信息,如果没有授权,会先授权,然后获取用户信息&/span&
pf.authorize();
&span class=&hljs-javadoc& style=&color: rgb(136, 0, 0); box-sizing: border-&&/** 新浪微博授权成功回调页面 */&/span&
&span class=&hljs-annotation& style=&color: rgb(155, 133, 157); box-sizing: border-&&@Override&/span&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&public&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&void&/span& &span class=&hljs-title& style=&box-sizing: border-&&onComplete&/span&(Platform platform, &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&int&/span& action, HashMap&String, Object& hashMap) {
&span class=&hljs-javadoc& style=&color: rgb(136, 0, 0); box-sizing: border-&&/** res是返回的数据,例如showUser(null),返回用户信息,对其解析就行
/androidDoc/cn/sharesdk/framework/PlatformActionListener.html
Message msg = &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&new&/span& Message();
msg.what = MSG_ACTION_CCALLBACK;
msg.arg1 = &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&1&/span&;
msg.arg2 =
UIHandler.sendMessage(msg, &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&this&/span&);
&span class=&hljs-javadoc& style=&color: rgb(136, 0, 0); box-sizing: border-&&/** 取消授权 */&/span&
&span class=&hljs-annotation& style=&color: rgb(155, 133, 157); box-sizing: border-&&@Override&/span&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&public&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&void&/span& &span class=&hljs-title& style=&box-sizing: border-&&onCancel&/span&(Platform platform, &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&int&/span& action) {
Message msg = &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&new&/span& Message();
msg.what = MSG_ACTION_CCALLBACK;
msg.arg1 = &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&3&/span&;
msg.arg2 =
UIHandler.sendMessage(msg, &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&this&/span&);
&span class=&hljs-javadoc& style=&color: rgb(136, 0, 0); box-sizing: border-&&/** 授权失败 */&/span&
&span class=&hljs-annotation& style=&color: rgb(155, 133, 157); box-sizing: border-&&@Override&/span&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&public&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&void&/span& &span class=&hljs-title& style=&box-sizing: border-&&onError&/span&(Platform platform, &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&int&/span& action, Throwable t) {
t.printStackTrace();
t.getMessage();
Message msg = &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&new&/span& Message();
msg.what = MSG_ACTION_CCALLBACK;
msg.arg1 = &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&2&/span&;
msg.arg2 =
UIHandler.sendMessage(msg, &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&this&/span&);
&span class=&hljs-annotation& style=&color: rgb(155, 133, 157); box-sizing: border-&&@Override&/span&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&public&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&boolean&/span& &span class=&hljs-title& style=&box-sizing: border-&&handleMessage&/span&(Message msg) {
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&switch&/span&(msg.what) {
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&case&/span& MSG_TOAST: {
String text = String.valueOf(msg.obj);
Toast.makeText(MainActivity.&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&this&/span&, text, Toast.LENGTH_SHORT).show();
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&break&/span&;
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&case&/span& MSG_ACTION_CCALLBACK: {
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&switch&/span& (msg.arg1) {
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&case&/span& &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&1&/span&: {
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&// 成功, successful notification&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&//授权成功后,获取用户信息,要自己解析,看看oncomplete里面的注释&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&//ShareSDK只保存以下这几个通用值&/span&
Platform pf = ShareSDK.getPlatform(MainActivity.&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&this&/span&, SinaWeibo.NAME);
Log.e(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&sharesdk use_id&&/span&, pf.getDb().getUserId()); &span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&//获取用户id&/span&
Log.e(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&sharesdk use_name&&/span&, pf.getDb().getUserName());&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&//获取用户名称&/span&
Log.e(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&sharesdk use_icon&&/span&, pf.getDb().getUserIcon());&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&//获取用户头像&/span&
mThirdLoginResult.setText(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&授权成功&&/span&+&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&\n&&/span&+&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&用户id:&&/span& + pf.getDb().getUserId() + &span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&\n&&/span& + &span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&获取用户名称&&/span& + pf.getDb().getUserName() + &span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&\n&&/span& + &span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&获取用户头像&&/span& + pf.getDb().getUserIcon());
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&//mPf.author()这个方法每一次都会调用授权,出现授权界面&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&//如果要删除授权信息,重新授权&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&//mPf.getDb().removeAccount();&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&//调用后,用户就得重新授权,否则下一次就不用授权&/span&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&break&/span&;
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&case&/span& &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&2&/span&: {
mThirdLoginResult.setText(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&登录失败&&/span&);
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&break&/span&;
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&case&/span& &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&3&/span&: {
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&// 取消, cancel notification&/span&
mThirdLoginResult.setText(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&取消授权&&/span&);
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&break&/span&;
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&break&/span&;
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&case&/span& MSG_CANCEL_NOTIFY: {
NotificationManager nm = (NotificationManager) msg.
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&if&/span& (nm != &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&null&/span&) {
nm.cancel(msg.arg1);
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&break&/span&;
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&return&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&false&/span&;
}&/code&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align: background-color: rgb(238, 238, 238);&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&li style=&box-sizing: border- padding: 0px 5&&2&/li&&li style=&box-sizing: border- padding: 0px 5&&3&/li&&li style=&box-sizing: border- padding: 0px 5&&4&/li&&li style=&box-sizing: border- padding: 0px 5&&5&/li&&li style=&box-sizing: border- padding: 0px 5&&6&/li&&li style=&box-sizing: border- padding: 0px 5&&7&/li&&li style=&box-sizing: border- padding: 0px 5&&8&/li&&li style=&box-sizing: border- padding: 0px 5&&9&/li&&li style=&box-sizing: border- padding: 0px 5&&10&/li&&li style=&box-sizing: border- padding: 0px 5&&11&/li&&li style=&box-sizing: border- padding: 0px 5&&12&/li&&li style=&box-sizing: border- padding: 0px 5&&13&/li&&li style=&box-sizing: border- padding: 0px 5&&14&/li&&li style=&box-sizing: border- padding: 0px 5&&15&/li&&li style=&box-sizing: border- padding: 0px 5&&16&/li&&li style=&box-sizing: border- padding: 0px 5&&17&/li&&li style=&box-sizing: border- padding: 0px 5&&18&/li&&li style=&box-sizing: border- padding: 0px 5&&19&/li&&li style=&box-sizing: border- padding: 0px 5&&20&/li&&li style=&box-sizing: border- padding: 0px 5&&21&/li&&li style=&box-sizing: border- padding: 0px 5&&22&/li&&li style=&box-sizing: border- padding: 0px 5&&23&/li&&li style=&box-sizing: border- padding: 0px 5&&24&/li&&li style=&box-sizing: border- padding: 0px 5&&25&/li&&li style=&box-sizing: border- padding: 0px 5&&26&/li&&li style=&box-sizing: border- padding: 0px 5&&27&/li&&li style=&box-sizing: border- padding: 0px 5&&28&/li&&li style=&box-sizing: border- padding: 0px 5&&29&/li&&li style=&box-sizing: border- padding: 0px 5&&30&/li&&li style=&box-sizing: border- padding: 0px 5&&31&/li&&li style=&box-sizing: border- padding: 0px 5&&32&/li&&li style=&box-sizing: border- padding: 0px 5&&33&/li&&li style=&box-sizing: border- padding: 0px 5&&34&/li&&li style=&box-sizing: border- padding: 0px 5&&35&/li&&li style=&box-sizing: border- padding: 0px 5&&36&/li&&li style=&box-sizing: border- padding: 0px 5&&37&/li&&li style=&box-sizing: border- padding: 0px 5&&38&/li&&li style=&box-sizing: border- padding: 0px 5&&39&/li&&li style=&box-sizing: border- padding: 0px 5&&40&/li&&li style=&box-sizing: border- padding: 0px 5&&41&/li&&li style=&box-sizing: border- padding: 0px 5&&42&/li&&li style=&box-sizing: border- padding: 0px 5&&43&/li&&li style=&box-sizing: border- padding: 0px 5&&44&/li&&li style=&box-sizing: border- padding: 0px 5&&45&/li&&li style=&box-sizing: border- padding: 0px 5&&46&/li&&li style=&box-sizing: border- padding: 0px 5&&47&/li&&li style=&box-sizing: border- padding: 0px 5&&48&/li&&li style=&box-sizing: border- padding: 0px 5&&49&/li&&li style=&box-sizing: border- padding: 0px 5&&50&/li&&li style=&box-sizing: border- padding: 0px 5&&51&/li&&li style=&box-sizing: border- padding: 0px 5&&52&/li&&li style=&box-sizing: border- padding: 0px 5&&53&/li&&li style=&box-sizing: border- padding: 0px 5&&54&/li&&li style=&box-sizing: border- padding: 0px 5&&55&/li&&li style=&box-sizing: border- padding: 0px 5&&56&/li&&li style=&box-sizing: border- padding: 0px 5&&57&/li&&li style=&box-sizing: border- padding: 0px 5&&58&/li&&li style=&box-sizing: border- padding: 0px 5&&59&/li&&li style=&box-sizing: border- padding: 0px 5&&60&/li&&li style=&box-sizing: border- padding: 0px 5&&61&/li&&li style=&box-sizing: border- padding: 0px 5&&62&/li&&li style=&box-sizing: border- padding: 0px 5&&63&/li&&li style=&box-sizing: border- padding: 0px 5&&64&/li&&li style=&box-sizing: border- padding: 0px 5&&65&/li&&li style=&box-sizing: border- padding: 0px 5&&66&/li&&li style=&box-sizing: border- padding: 0px 5&&67&/li&&li style=&box-sizing: border- padding: 0px 5&&68&/li&&li style=&box-sizing: border- padding: 0px 5&&69&/li&&li style=&box-sizing: border- padding: 0px 5&&70&/li&&li style=&box-sizing: border- padding: 0px 5&&71&/li&&li style=&box-sizing: border- padding: 0px 5&&72&/li&&li style=&box-sizing: border- padding: 0px 5&&73&/li&&li style=&box-sizing: border- padding: 0px 5&&74&/li&&li style=&box-sizing: border- padding: 0px 5&&75&/li&&li style=&box-sizing: border- padding: 0px 5&&76&/li&&li style=&box-sizing: border- padding: 0px 5&&77&/li&&li style=&box-sizing: border- padding: 0px 5&&78&/li&&li style=&box-sizing: border- padding: 0px 5&&79&/li&&li style=&box-sizing: border- padding: 0px 5&&80&/li&&li style=&box-sizing: border- padding: 0px 5&&81&/li&&li style=&box-sizing: border- padding: 0px 5&&82&/li&&li style=&box-sizing: border- padding: 0px 5&&83&/li&&li style=&box-sizing: border- padding: 0px 5&&84&/li&&li style=&box-sizing: border- padding: 0px 5&&85&/li&&li style=&box-sizing: border- padding: 0px 5&&86&/li&&li style=&box-sizing: border- padding: 0px 5&&87&/li&&li style=&box-sizing: border- padding: 0px 5&&88&/li&&li style=&box-sizing: border- padding: 0px 5&&89&/li&&li style=&box-sizing: border- padding: 0px 5&&90&/li&&li style=&box-sizing: border- padding: 0px 5&&91&/li&&li style=&box-sizing: border- padding: 0px 5&&92&/li&&li style=&box-sizing: border- padding: 0px 5&&93&/li&&li style=&box-sizing: border- padding: 0px 5&&94&/li&&li style=&box-sizing: border- padding: 0px 5&&95&/li&&/ul&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align: background-color: rgb(238, 238, 238);&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&li style=&box-sizing: border- padding: 0px 5&&2&/li&&li style=&box-sizing: border- padding: 0px 5&&3&/li&&li style=&box-sizing: border- padding: 0px 5&&4&/li&&li style=&box-sizing: border- padding: 0px 5&&5&/li&&li style=&box-sizing: border- padding: 0px 5&&6&/li&&li style=&box-sizing: border- padding: 0px 5&&7&/li&&li style=&box-sizing: border- padding: 0px 5&&8&/li&&li style=&box-sizing: border- padding: 0px 5&&9&/li&&li style=&box-sizing: border- padding: 0px 5&&10&/li&&li style=&box-sizing: border- padding: 0px 5&&11&/li&&li style=&box-sizing: border- padding: 0px 5&&12&/li&&li style=&box-sizing: border- padding: 0px 5&&13&/li&&li style=&box-sizing: border- padding: 0px 5&&14&/li&&li style=&box-sizing: border- padding: 0px 5&&15&/li&&li style=&box-sizing: border- padding: 0px 5&&16&/li&&li style=&box-sizing: border- padding: 0px 5&&17&/li&&li style=&box-sizing: border- padding: 0px 5&&18&/li&&li style=&box-sizing: border- padding: 0px 5&&19&/li&&li style=&box-sizing: border- padding: 0px 5&&20&/li&&li style=&box-sizing: border- padding: 0px 5&&21&/li&&li style=&box-sizing: border- padding: 0px 5&&22&/li&&li style=&box-sizing: border- padding: 0px 5&&23&/li&&li style=&box-sizing: border- padding: 0px 5&&24&/li&&li style=&box-sizing: border- padding: 0px 5&&25&/li&&li style=&box-sizing: border- padding: 0px 5&&26&/li&&li style=&box-sizing: border- padding: 0px 5&&27&/li&&li style=&box-sizing: border- padding: 0px 5&&28&/li&&li style=&box-sizing: border- padding: 0px 5&&29&/li&&li style=&box-sizing: border- padding: 0px 5&&30&/li&&li style=&box-sizing: border- padding: 0px 5&&31&/li&&li style=&box-sizing: border- padding: 0px 5&&32&/li&&li style=&box-sizing: border- padding: 0px 5&&33&/li&&li style=&box-sizing: border- padding: 0px 5&&34&/li&&li style=&box-sizing: border- padding: 0px 5&&35&/li&&li style=&box-sizing: border- padding: 0px 5&&36&/li&&li style=&box-sizing: border- padding: 0px 5&&37&/li&&li style=&box-sizing: border- padding: 0px 5&&38&/li&&li style=&box-sizing: border- padding: 0px 5&&39&/li&&li style=&box-sizing: border- padding: 0px 5&&40&/li&&li style=&box-sizing: border- padding: 0px 5&&41&/li&&li style=&box-sizing: border- padding: 0px 5&&42&/li&&li style=&box-sizing: border- padding: 0px 5&&43&/li&&li style=&box-sizing: border- padding: 0px 5&&44&/li&&li style=&box-sizing: border- padding: 0px 5&&45&/li&&li style=&box-sizing: border- padding: 0px 5&&46&/li&&li style=&box-sizing: border- padding: 0px 5&&47&/li&&li style=&box-sizing: border- padding: 0px 5&&48&/li&&li style=&box-sizing: border- padding: 0px 5&&49&/li&&li style=&box-sizing: border- padding: 0px 5&&50&/li&&li style=&box-sizing: border- padding: 0px 5&&51&/li&&li style=&box-sizing: border- padding: 0px 5&&52&/li&&li style=&box-sizing: border- padding: 0px 5&&53&/li&&li style=&box-sizing: border- padding: 0px 5&&54&/li&&li style=&box-sizing: border- padding: 0px 5&&55&/li&&li style=&box-sizing: border- padding: 0px 5&&56&/li&&li style=&box-sizing: border- padding: 0px 5&&57&/li&&li style=&box-sizing: border- padding: 0px 5&&58&/li&&li style=&box-sizing: border- padding: 0px 5&&59&/li&&li style=&box-sizing: border- padding: 0px 5&&60&/li&&li style=&box-sizing: border- padding: 0px 5&&61&/li&&li style=&box-sizing: border- padding: 0px 5&&62&/li&&li style=&box-sizing: border- padding: 0px 5&&63&/li&&li style=&box-sizing: border- padding: 0px 5&&64&/li&&li style=&box-sizing: border- padding: 0px 5&&65&/li&&li style=&box-sizing: border- padding: 0px 5&&66&/li&&li style=&box-sizing: border- padding: 0px 5&&67&/li&&li style=&box-sizing: border- padding: 0px 5&&68&/li&&li style=&box-sizing: border- padding: 0px 5&&69&/li&&li style=&box-sizing: border- padding: 0px 5&&70&/li&&li style=&box-sizing: border- padding: 0px 5&&71&/li&&li style=&box-sizing: border- padding: 0px 5&&72&/li&&li style=&box-sizing: border- padding: 0px 5&&73&/li&&li style=&box-sizing: border- padding: 0px 5&&74&/li&&li style=&box-sizing: border- padding: 0px 5&&75&/li&&li style=&box-sizing: border- padding: 0px 5&&76&/li&&li style=&box-sizing: border- padding: 0px 5&&77&/li&&li style=&box-sizing: border- padding: 0px 5&&78&/li&&li style=&box-sizing: border- padding: 0px 5&&79&/li&&li style=&box-sizing: border- padding: 0px 5&&80&/li&&li style=&box-sizing: border- padding: 0px 5&&81&/li&&li style=&box-sizing: border- padding: 0px 5&&82&/li&&li style=&box-sizing: border- padding: 0px 5&&83&/li&&li style=&box-sizing: border- padding: 0px 5&&84&/li&&li style=&box-sizing: border- padding: 0px 5&&85&/li&&li style=&box-sizing: border- padding: 0px 5&&86&/li&&li style=&box-sizing: border- padding: 0px 5&&87&/li&&li style=&box-sizing: border- padding: 0px 5&&88&/li&&li style=&box-sizing: border- padding: 0px 5&&89&/li&&li style=&box-sizing: border- padding: 0px 5&&90&/li&&li style=&box-sizing: border- padding: 0px 5&&91&/li&&li style=&box-sizing: border- padding: 0px 5&&92&/li&&li style=&box-sizing: border- padding: 0px 5&&93&/li&&li style=&box-sizing: border- padding: 0px 5&&94&/li&&li style=&box-sizing: border- padding: 0px 5&&95&/li&&/ul&
最后退出登录
&code class=&hljs avrasm has-numbering& style=&display: padding: 0 color: box-sizing: border- font-family: 'Source Code Pro',font-size: white-space: border-radius: 0 word-wrap: background:&&
Platform mPf = ShareSDK&span class=&hljs-preprocessor& style=&color: rgb(68, 68, 68); box-sizing: border-&&.getPlatform&/span&(MainActivity&span class=&hljs-preprocessor& style=&color: rgb(68, 68, 68); box-sizing: border-&&.this&/span&, SinaWeibo&span class=&hljs-preprocessor& style=&color: rgb(68, 68, 68); box-sizing: border-&&.NAME&/span&)&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&;&/span&
//如果要删除授权信息,重新授权
ShareSDK&span class=&hljs-preprocessor& style=&color: rgb(68, 68, 68); box-sizing: border-&&.removeCookieOnAuthorize&/span&(true)&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&;&/span&
mPf&span class=&hljs-preprocessor& style=&color: rgb(68, 68, 68); box-sizing: border-&&.removeAccount&/span&()&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&;&/span&&/code&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align: background-color: rgb(238, 238, 238);&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&li style=&box-sizing: border- padding: 0px 5&&2&/li&&li style=&box-sizing: border- padding: 0px 5&&3&/li&&li style=&box-sizing: border- padding: 0px 5&&4&/li&&/ul&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align: background-color: rgb(238, 238, 238);&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&li style=&box-sizing: border- padding: 0px 5&&2&/li&&li style=&box-sizing: border- padding: 0px 5&&3&/li&&li style=&box-sizing: border- padding: 0px 5&&4&/li&&/ul&
到这里关于新浪微博第三方登录的就基本结束了,我们获取到了用户的id、昵称、头像地址等信息,使用唯一值id再结合自己服务器的接口,便可实现第三方登录了.效果图如下:&
注意:如果你想修改授权的登录页面,可以参考&
QQ第三方登录实现:
一、我不建议大家去看QQ开放平台关于获取个人信息那部分的文档,因为他们的文档已经过时了,我当时按照文档做过,但是一直报错,后来问客服,他告诉我他们的文档它久远了,已经不能用了&当时我就醉了、、&,而是给了我一份Demo,我会把Demo放在里面供大家下载。&
二、大家使用的测试机一定要是自动获取的网络时间,否则得不到信息,并且也没有错误信息,我研究了半天的时间,也没找到到底为什么,一问客服才知道,服务器时间和请求时间戳要相同才可以&我又是醉了、、、&。&
三、大家要打包APP再进行测试。
QQ第三方登录的步骤分为:&
1.先登录成功获取token和openid&
2.再通过token和openid获取用户的信息。
一、导入SDK的jar文件&
把这两个jar文件导入项目中&
二、配置AndroidManifest
&code class=&hljs xml has-numbering& style=&display: padding: 0 color: box-sizing: border- font-family: 'Source Code Pro',font-size: white-space: border-radius: 0 word-wrap: background:&&&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&&!-- QQ第三方登录相关
开始 --&&/span&
&span class=&hljs-tag& style=&color: rgb(0, 102, 102); box-sizing: border-&&&&span class=&hljs-title& style=&box-sizing: border- color: rgb(0, 0, 136);&&activity
&span class=&hljs-attribute& style=&box-sizing: border- color: rgb(102, 0, 102);&&android:name&/span&=&span class=&hljs-value& style=&box-sizing: border- color: rgb(0, 136, 0);&&&com.tencent.tauth.AuthActivity&&/span&
&span class=&hljs-attribute& style=&box-sizing: border- color: rgb(102, 0, 102);&&android:launchMode&/span&=&span class=&hljs-value& style=&box-sizing: border- color: rgb(0, 136, 0);&&&singleTask&&/span&
&span class=&hljs-attribute& style=&box-sizing: border- color: rgb(102, 0, 102);&&android:noHistory&/span&=&span class=&hljs-value& style=&box-sizing: border- color: rgb(0, 136, 0);&&&true&&/span& &&/span&
&span class=&hljs-tag& style=&color: rgb(0, 102, 102); box-sizing: border-&&&&span class=&hljs-title& style=&box-sizing: border- color: rgb(0, 0, 136);&&intent-filter&/span&&&/span&
&span class=&hljs-tag& style=&color: rgb(0, 102, 102); box-sizing: border-&&&&span class=&hljs-title& style=&box-sizing: border- color: rgb(0, 0, 136);&&action&/span& &span class=&hljs-attribute& style=&box-sizing: border- color: rgb(102, 0, 102);&&android:name&/span&=&span class=&hljs-value& style=&box-sizing: border- color: rgb(0, 136, 0);&&&android.intent.action.VIEW&&/span& /&&/span&
&span class=&hljs-tag& style=&color: rgb(0, 102, 102); box-sizing: border-&&&&span class=&hljs-title& style=&box-sizing: border- color: rgb(0, 0, 136);&&category&/span& &span class=&hljs-attribute& style=&box-sizing: border- color: rgb(102, 0, 102);&&android:name&/span&=&span class=&hljs-value& style=&box-sizing: border- color: rgb(0, 136, 0);&&&android.intent.category.DEFAULT&&/span& /&&/span&
&span class=&hljs-tag& style=&color: rgb(0, 102, 102); box-sizing: border-&&&&span class=&hljs-title& style=&box-sizing: border- color: rgb(0, 0, 136);&&category&/span& &span class=&hljs-attribute& style=&box-sizing: border- color: rgb(102, 0, 102);&&android:name&/span&=&span class=&hljs-value& style=&box-sizing: border- color: rgb(0, 136, 0);&&&android.intent.category.BROWSABLE&&/span& /&&/span&
&span class=&hljs-tag& style=&color: rgb(0, 102, 102); box-sizing: border-&&&&span class=&hljs-title& style=&box-sizing: border- color: rgb(0, 0, 136);&&data&/span& &span class=&hljs-attribute& style=&box-sizing: border- color: rgb(102, 0, 102);&&android:scheme&/span&=&span class=&hljs-value& style=&box-sizing: border- color: rgb(0, 136, 0);&&&tencent你的APPId&&/span& /&&/span&
&span class=&hljs-tag& style=&color: rgb(0, 102, 102); box-sizing: border-&&&/&span class=&hljs-title& style=&box-sizing: border- color: rgb(0, 0, 136);&&intent-filter&/span&&&/span&
&span class=&hljs-tag& style=&color: rgb(0, 102, 102); box-sizing: border-&&&/&span class=&hljs-title& style=&box-sizing: border- color: rgb(0, 0, 136);&&activity&/span&&&/span&
&span class=&hljs-tag& style=&color: rgb(0, 102, 102); box-sizing: border-&&&&span class=&hljs-title& style=&box-sizing: border- color: rgb(0, 0, 136);&&activity&/span& &span class=&hljs-attribute& style=&box-sizing: border- color: rgb(102, 0, 102);&&android:name&/span&=&span class=&hljs-value& style=&box-sizing: border- color: rgb(0, 136, 0);&&&com.mon.AssistActivity&&/span&
&span class=&hljs-attribute& style=&box-sizing: border- color: rgb(102, 0, 102);&&android:theme&/span&=&span class=&hljs-value& style=&box-sizing: border- color: rgb(0, 136, 0);&&&@android:style/Theme.Translucent.NoTitleBar&&/span&
&span class=&hljs-attribute& style=&box-sizing: border- color: rgb(102, 0, 102);&&android:configChanges&/span&=&span class=&hljs-value& style=&box-sizing: border- color: rgb(0, 136, 0);&&&orientation|keyboardHidden|screenSize&&/span&
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&&!-- QQ第三方登录相关
结束 --&&/span&&/code&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align: background-color: rgb(238, 238, 238);&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&li style=&box-sizing: border- padding: 0px 5&&2&/li&&li style=&box-sizing: border- padding: 0px 5&&3&/li&&li style=&box-sizing: border- padding: 0px 5&&4&/li&&li style=&box-sizing: border- padding: 0px 5&&5&/li&&li style=&box-sizing: border- padding: 0px 5&&6&/li&&li style=&box-sizing: border- padding: 0px 5&&7&/li&&li style=&box-sizing: border- padding: 0px 5&&8&/li&&li style=&box-sizing: border- padding: 0px 5&&9&/li&&li style=&box-sizing: border- padding: 0px 5&&10&/li&&li style=&box-sizing: border- padding: 0px 5&&11&/li&&li style=&box-sizing: border- padding: 0px 5&&12&/li&&li style=&box-sizing: border- padding: 0px 5&&13&/li&&li style=&box-sizing: border- padding: 0px 5&&14&/li&&li style=&box-sizing: border- padding: 0px 5&&15&/li&&li style=&box-sizing: border- padding: 0px 5&&16&/li&&li style=&box-sizing: border- padding: 0px 5&&17&/li&&li style=&box-sizing: border- padding: 0px 5&&18&/li&&li style=&box-sizing: border- padding: 0px 5&&19&/li&&/ul&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align: background-color: rgb(238, 238, 238);&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&li style=&box-sizing: border- padding: 0px 5&&2&/li&&li style=&box-sizing: border- padding: 0px 5&&3&/li&&li style=&box-sizing: border- padding: 0px 5&&4&/li&&li style=&box-sizing: border- padding: 0px 5&&5&/li&&li style=&box-sizing: border- padding: 0px 5&&6&/li&&li style=&box-sizing: border- padding: 0px 5&&7&/li&&li style=&box-sizing: border- padding: 0px 5&&8&/li&&li style=&box-sizing: border- padding: 0px 5&&9&/li&&li style=&box-sizing: border- padding: 0px 5&&10&/li&&li style=&box-sizing: border- padding: 0px 5&&11&/li&&li style=&box-sizing: border- padding: 0px 5&&12&/li&&li style=&box-sizing: border- padding: 0px 5&&13&/li&&li style=&box-sizing: border- padding: 0px 5&&14&/li&&li style=&box-sizing: border- padding: 0px 5&&15&/li&&li style=&box-sizing: border- padding: 0px 5&&16&/li&&li style=&box-sizing: border- padding: 0px 5&&17&/li&&li style=&box-sizing: border- padding: 0px 5&&18&/li&&li style=&box-sizing: border- padding: 0px 5&&19&/li&&/ul&
在scheme这个字段输入你申请的appid,tencent不要删掉。
三、添加代码&
首先在程序入口添加:
&code class=&hljs avrasm has-numbering& style=&display: padding: 0 color: box-sizing: border- font-family: 'Source Code Pro',font-size: white-space: border-radius: 0 word-wrap: background:&&Tencent mTencent = Tencent&span class=&hljs-preprocessor& style=&color: rgb(68, 68, 68); box-sizing: border-&&.createInstance&/span&(你的AppId, this&span class=&hljs-preprocessor& style=&color: rgb(68, 68, 68); box-sizing: border-&&.getApplicationContext&/span&())&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&;&/span&&/code&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align: background-color: rgb(238, 238, 238);&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&/ul&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align: background-color: rgb(238, 238, 238);&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&/ul&
剩下的调用loginQQ方法便可以:
&code class=&hljs java has-numbering& style=&display: padding: 0 color: box-sizing: border- font-family: 'Source Code Pro',font-size: white-space: border-radius: 0 word-wrap: background:&&&span class=&hljs-javadoc& style=&color: rgb(136, 0, 0); box-sizing: border-&&/** ------------------------QQ第三方登录-------------------- */&/span&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&public&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&void&/span& &span class=&hljs-title& style=&box-sizing: border-&&loginQQ&/span&(){
&span class=&hljs-javadoc& style=&color: rgb(136, 0, 0); box-sizing: border-&&/** 判断是否登陆过 */&/span&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&if&/span& (!mTencent.isSessionValid()){
mTencent.login(&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&this&/span&, &span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&all&&/span&,loginListener);
}&span class=&hljs-javadoc& style=&color: rgb(136, 0, 0); box-sizing: border-&&/** 登陆过注销之后在登录 */&/span&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&else&/span& {
mTencent.logout(&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&this&/span&);
mTencent.login(&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&this&/span&, &span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&all&&/span&,loginListener);
IUiListener loginListener = &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&new&/span& BaseUiListener() {
&span class=&hljs-annotation& style=&color: rgb(155, 133, 157); box-sizing: border-&&@Override&/span&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&protected&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&void&/span& &span class=&hljs-title& style=&box-sizing: border-&&doComplete&/span&(JSONObject values) {
initOpenidAndToken(values);
updateUserInfo();
&span class=&hljs-javadoc& style=&color: rgb(136, 0, 0); box-sizing: border-&&/** QQ登录第二步:存储token和openid */&/span&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&public&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&static&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&void&/span& &span class=&hljs-title& style=&box-sizing: border-&&initOpenidAndToken&/span&(JSONObject jsonObject) {
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&try&/span& {
String token = jsonObject.getString(Constants.PARAM_ACCESS_TOKEN);
String expires = jsonObject.getString(Constants.PARAM_EXPIRES_IN);
String openId = jsonObject.getString(Constants.PARAM_OPEN_ID);
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&if&/span& (!TextUtils.isEmpty(token) && !TextUtils.isEmpty(expires) && !TextUtils.isEmpty(openId)) {
mTencent.setAccessToken(token, expires);
mTencent.setOpenId(openId);
} &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&catch&/span&(Exception e) {
&span class=&hljs-javadoc& style=&color: rgb(136, 0, 0); box-sizing: border-&&/** QQ登录第三步:获取用户信息 */&/span&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&private&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&void&/span& &span class=&hljs-title& style=&box-sizing: border-&&updateUserInfo&/span&() {
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&if&/span& (mTencent != &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&null&/span& && mTencent.isSessionValid()) {
IUiListener listener = &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&new&/span& IUiListener() {
&span class=&hljs-annotation& style=&color: rgb(155, 133, 157); box-sizing: border-&&@Override&/span&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&public&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&void&/span& &span class=&hljs-title& style=&box-sizing: border-&&onError&/span&(UiError e) {
Message msg = &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&new&/span& Message();
msg.obj = &span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&把手机时间改成获取网络时间&&/span&;
msg.what = &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&1&/span&;
mHandler.sendMessage(msg);
&span class=&hljs-annotation& style=&color: rgb(155, 133, 157); box-sizing: border-&&@Override&/span&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&public&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&void&/span& &span class=&hljs-title& style=&box-sizing: border-&&onComplete&/span&(&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&final&/span& Object response) {
Message msg = &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&new&/span& Message();
msg.what = &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&0&/span&;
mHandler.sendMessage(msg);
&span class=&hljs-annotation& style=&color: rgb(155, 133, 157); box-sizing: border-&&@Override&/span&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&public&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&void&/span& &span class=&hljs-title& style=&box-sizing: border-&&onCancel&/span&() {
Message msg = &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&new&/span& Message();
msg.obj = &span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&获取用户信息失败&&/span&;
msg.what = &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&2&/span&;
mHandler.sendMessage(msg);
mInfo = &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&new&/span& UserInfo(&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&this&/span&, mTencent.getQQToken());
mInfo.getUserInfo(listener);
} &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&else&/span& {
Handler mHandler = &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&new&/span& Handler() {
&span class=&hljs-annotation& style=&color: rgb(155, 133, 157); box-sizing: border-&&@Override&/span&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&public&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&void&/span& &span class=&hljs-title& style=&box-sizing: border-&&handleMessage&/span&(Message msg) {
&span class=&hljs-javadoc& style=&color: rgb(136, 0, 0); box-sizing: border-&&/** 获取用户信息成功 */&/span&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&if&/span& (msg.what == &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&0&/span&) {
JSONObject response = (JSONObject) msg.
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&if&/span& (response.has(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&nickname&&/span&)) {
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&try&/span& {
log(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&获取用户信息成功,返回结果:&&/span&+response.toString());
mThirdLoginResult.setText(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&登录成功\n&&/span&+&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&用户id:&&/span&+openid+&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&\n昵称:&&/span&+response.getString(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&nickname&&/span&)+&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&\n头像地址:&&/span&+response.get(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&figureurl_qq_1&&/span&));
} &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&catch&/span& (JSONException e) {
e.printStackTrace();
}&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&else&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&if&/span&(msg.what == &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&1&/span&){
mThirdLoginResult.setText(msg+&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&&&/span&);
}&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&else&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&if&/span&(msg.what == &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&2&/span&){
mThirdLoginResult.setText(msg+&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&&&/span&);
&span class=&hljs-javadoc& style=&color: rgb(136, 0, 0); box-sizing: border-&&/** QQ登录第一步:获取token和openid */&/span&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&private&/span& &span class=&hljs-class& style=&box-sizing: border-&&&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&class&/span& &span class=&hljs-title& style=&box-sizing: border- color: rgb(102, 0, 102);&&BaseUiListener&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&implements&/span& &span class=&hljs-title& style=&box-sizing: border- color: rgb(102, 0, 102);&&IUiListener&/span& {&/span&
&span class=&hljs-annotation& style=&color: rgb(155, 133, 157); box-sizing: border-&&@Override&/span&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&public&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&void&/span& &span class=&hljs-title& style=&box-sizing: border-&&onComplete&/span&(Object response) {
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&if&/span& (&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&null&/span& == response) {
mToast(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&登录失败&&/span&);
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&return&/span&;
JSONObject jsonResponse = (JSONObject)
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&if&/span& (&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&null&/span& != jsonResponse && jsonResponse.length() == &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&0&/span&) {
mToast(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&登录失败&&/span&);
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&return&/span&;
log(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&QQ登录成功返回结果-&&/span& + response.toString());
doComplete((JSONObject)response);
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&protected&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&void&/span& &span class=&hljs-title& style=&box-sizing: border-&&doComplete&/span&(JSONObject response) {}
&span class=&hljs-annotation& style=&color: rgb(155, 133, 157); box-sizing: border-&&@Override}

我要回帖

更多关于 微信第三方登录 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信