iOS开发-Umeng第三方登录

官方网址: http://dev.umeng.com/social/ios/operation#2

一、注册友盟账号

登陆友盟官网,在我的产品页面添加新应用,然后获取到Appkey.

二、申请第三方账号

1.新浪微博

登录新浪微博开放平台(点击链接),填写相关应用信息并上传icon图片。注意修改安全域名为sns.whalecloud.com 同时设置授权回调页为http://sns.whalecloud.com/sina2/callback 安全域名设置在应用信息-->基本信息.

iOS开发-Umeng第三方登录_第1张图片

新浪申请账号界面.jpg.png


授权回调页、取消授权回调页设置在应用信息-->高级信息.

iOS开发-Umeng第三方登录_第2张图片

新浪设置回调页.png

 

  • 安全域名的修改需要二次审核通过才生效,授权回调页修改即时生效.

2.微信

登录微信开放平台(点击链接),填写相关应用信息,审核通过后获取到微信AppID及AppSecret,如果需要微信登录功能,需要申请微信登录权限.

3.QQ及Qzone

QQ及Qzone使用同一个AppID及Appkey,登录腾讯开放平台(点击链接) ,选择移动应用,填写相关应用信息并提交审核,未审核前通过只能使用测试账号,添加测试账号方法如下: 选择用户能力-->进阶社交能力-->应用调试者,添加测试账号必须在申请者好友列表中.

 

iOS开发-Umeng第三方登录_第3张图片

添加测试账号.png

4.人人网

登录人人开放平台(点击链接) ,填写相关应用信息,同时填写应用根域名为sns.whalecloud.com 具体位置: 基本信息-->应用根域名.

 

iOS开发-Umeng第三方登录_第4张图片

人人网基本信息.png

5.豆瓣

登录豆瓣开放平台(点击链接),创建应用并填写相关应用信息,注意权限必须选择广播,同时填写回调地址为http://sns.whalecloud.com/douban/callback.

iOS开发-Umeng第三方登录_第5张图片

豆瓣回调地址.png

 

iOS开发-Umeng第三方登录_第6张图片

豆瓣api.png

 

三、绑定第三方账号到友盟后台

目前需要在友盟后台绑定的第三方账号为:新浪微博、腾讯微博、人人网、豆瓣、Qzone,其余平台如微信、QQ直接在代码中设置.
绑定地址:http://umeng.com/apps
登录友盟网站->左上角选择你们的产品->组件->社会化组件->设置.

iOS开发-Umeng第三方登录_第7张图片

添加到Umeng后台.png

 

1.短链接开关

短链接开关只对新浪微博、腾讯微博、人人网、豆瓣四个平台有效,开启短链接开关,分享文案中附加的链接会被转码,同时可以统计到分享回流率(点击链接的次数),关闭短链接开关则无法统计,短链接开关默认为关闭状态.

2.文字截断开关

文字截断开关只对新浪微博、腾讯微博、人人网、豆瓣四个平台有效,同时只对使用自定义分享编辑页或没有分享编辑页用户有效,当分享文案超出字数限制时自动截断,开关状态默认关闭。

四、适配iOS9系统

在新发布的iOS9系统上围绕用户数据的安全性和体验新增了一些安全特性,同时也影响了应用的实现以及集成方式,为了保证良好的稳定性和体验,需要做如下处理:

1.HTTP传输安全

以iOS9 SDK编译的工程会默认以SSL安全协议进行网络传输,即HTTPS,如果依然使用HTTP协议请求网络会报系统异常并中断请求。目前可用如下两种方式保持用HTTP进行网络连接:
A、在info.plist中加入安全域名白名单(右键info.plist用source code打开)

NSAppTransportSecurity

    NSExceptionDomains
    
        log.umsns.com
        
            NSIncludesSubdomains
            
            NSTemporaryExceptionAllowsInsecureHTTPLoads
            
            NSTemporaryExceptionMinimumTLSVersion
            TLSv1.1
        
        sns.whalecloud.com
        
            NSIncludesSubdomains
            
            NSTemporaryExceptionAllowsInsecureHTTPLoads
            
            NSTemporaryExceptionMinimumTLSVersion
            TLSv1.1
        

        
        sina.cn
        
            NSIncludesSubdomains
            
            NSThirdPartyExceptionRequiresForwardSecrecy
            
        
        weibo.cn
        
            NSIncludesSubdomains
            
            NSThirdPartyExceptionRequiresForwardSecrecy
            
        
        weibo.com
        
            NSIncludesSubdomains
            
            NSThirdPartyExceptionAllowsInsecureHTTPLoads
            
            NSThirdPartyExceptionRequiresForwardSecrecy
            
        
        sinaimg.cn
        
            NSIncludesSubdomains
            
            NSThirdPartyExceptionAllowsInsecureHTTPLoads
            
            NSThirdPartyExceptionRequiresForwardSecrecy
            
        
        sinajs.cn
        
            NSIncludesSubdomains
            
            NSThirdPartyExceptionAllowsInsecureHTTPLoads
            
            NSThirdPartyExceptionRequiresForwardSecrecy
            
        
        sina.com.cn
        
            NSIncludesSubdomains
            
            NSThirdPartyExceptionAllowsInsecureHTTPLoads
            
            NSThirdPartyExceptionRequiresForwardSecrecy
            
        
        

        
        qq.com
        
            NSIncludesSubdomains
            
            NSThirdPartyExceptionAllowsInsecureHTTPLoads
            
            NSThirdPartyExceptionRequiresForwardSecrecy
            
        
        

        
        renren.com
        
            NSIncludesSubdomains
            
            NSThirdPartyExceptionAllowsInsecureHTTPLoads
            
            NSThirdPartyExceptionRequiresForwardSecrecy
            
        
        

        
        facebook.com
        
            NSIncludesSubdomains
                            
            NSExceptionRequiresForwardSecrecy
            
        
        fbcdn.net
        
            NSIncludesSubdomains
            
            NSExceptionRequiresForwardSecrecy
            
        
        akamaihd.net
        
            NSIncludesSubdomains
            
            NSExceptionRequiresForwardSecrecy
            
        
        

        
        twitter.com
        
            NSIncludesSubdomains
                            
            NSExceptionRequiresForwardSecrecy
            
        
        
    

注:以上部分平台官方未给出相应白名单,由技术人员测试各个平台所收集而来,如果有所遗漏,请自行加入并向客服说明,我们会进一步补充名单.
B、在info.plist的NSAppTransportSecurity下新增NSAllowsArbitraryLoads并设置为YES,指定所有HTTP连接都可正常请求 http://dev.umeng.com/social/ios/ios9

NSAppTransportSecurity

    NSAllowsArbitraryLoads
    

2.应用跳转(SSO等)

如果你的应用使用了如SSO授权登录或跳转分享功能,在iOS9下就需要增加一个可跳转的白名单,指定对应跳转App的URL Scheme,否则将在第三方平台判断是否跳转时用到的canOpenURL时返回NO,进而只进行webview授权或授权/分享失败.
同样在info.plist增加:

LSApplicationQueriesSchemes

    
    wechat
    weixin

    
    sinaweibohd
    sinaweibo
    sinaweibosso
    weibosdk
    weibosdk2.5

    
    mqqapi
    mqq
    mqqOpensdkSSoLogin
    mqqconnect
    mqqopensdkdataline
    mqqopensdkgrouptribeshare
    mqqopensdkfriend
    mqqopensdkapi
    mqqopensdkapiV2
    mqqopensdkapiV3
    mqzoneopensdk
    wtloginmqq
    wtloginmqq2
    mqqwpa
    mqzone
    mqzonev2
    mqzoneshare
    wtloginqzone
    mqzonewx
    mqzoneopensdkapiV2
    mqzoneopensdkapi19
    mqzoneopensdkapi
    mqqbrowser
    mttbrowser

    
    renrenios
    renrenapi
    renren
    renreniphone

    
    laiwangsso

    
    yixin
    yixinopenapi

    
    instagram

    
    whatsapp

    
    line

    
    fbapi
    fb-messenger-api
    fbauth2
    fbshareextension

  • 注:以上部分平台官方未给出相应白名单,由技术人员测试各个平台所收集而来,如果有所遗漏,请自行加入并向客服说明,我们会进一步补充名单。

3. 应用瘦身(App Thining)

iOS9 SDK新增了对App瘦身的功能,详情见App Thining。目前各个第三方平台正在进行App thining的支持,所以为了正常使用第三方SDK及分享SDK,需要在Build Setting中将Enable bitcode关闭,或设置编译标识ENABLE_BITCODE=NO。

  • 注:bitcode仅在Xcode7以上显示并默认开启。

五、下载并安装SDK

1.使用cocoaPods

如需使用CocoaPods 在Podfile中增加一行,内容如下:

pod 'UMengSocial', '~> 5.0'

然后执行安装即可

pod install

2.下载SDK

http://dev.umeng.com/social/ios/sdk-download

3.设置友盟apply

  • 获取友盟Appkey。如果你之前已经在友盟注册了应用,获得了Appkey,可以继续使用之前获得Appkey.
  • 如果你尚未在友盟注册账号,需要先注册,注册之后登录你的账号,点击添加新应用,完成新应用填写之后,将进入应用管理页面。在该页面就能得到Appkey.
  • 在代码中设置你的友盟Appkey,在 AppDelegate文件内设置你的AppKey:
#import "UMSocial.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [UMSocialData setAppKey:@"your Umeng appKey"];

// 用下面的代码打开我们SDK在控制台的输出后能看到相应的错误码
    [UMSocialData openLog:YES];
}

并添加下方的系统回调方法:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary*)options{
     return  [UMSocialSnsService handleOpenURL:url];
}

六、配置URL schemes

1.为什么要配置 URL schemes

URL schemes 和跳出应用后返回应用的逻辑相关,因此如果使用了SSO授权功能或QQ、微信、webview方式的Facebook,就必须配置URL schemes,否则跳出应用后将无法返回.

2. 如何设置 URL schemes

在你的工程设置项,targets 一栏下,选中自己的 target,在 Info->URL Types 中添加 URL Schemes。如果使用的是Xcode3或更低版本,则需要在plist文件中添加。获取各个平台appkey或者appid的方法可以参考分享详细文档绑定各个平台部分,各个平台的url scheme格式如下表:

平台 | url scheme设置格式 ||
------------------|----------------|
新浪微博 | “wb”+新浪appkey,例如“wb126663232” |
微信 | 微信应用appId,例如“wxd9a39c7122aa6516” |
人人网 | “rm”+你的应用bundle id,例如“rmcom.umeng.SocialSDK” |
QQ、QQ空间 | 需要添加两个URL schemes 1. “QQ”+腾讯QQ互联应用appId转换成十六进制(不足8位前面补0),例如“QQ05FC5B14”。生成十六进制方法:点击链接。2.“tencent“+腾讯QQ互联应用Id,例如“tencent100424468" |
来往 | Identifier填“Laiwang”,URL Schemes填来往AppId.注意使用来往SDK后,Xcode工程other linker flags需要添加-ObjC参数� |
易信 | 易信Appkey,例如“yx35664bdff4db42c2b7be1e29390c1a06” |
Facebook | 集成最新的Facebook SDK在iOS7.0以上有效,若要使用我们提供的facebook分享需要设置“fb”+facebook AppID,例如“fb1440390216179601” |

七、第三方登录

1.第三方登录概述

第三方登录主要用于简化用户登录流程,通过用户拥有的微博、QQ、微信等第三方账号进行登录并且构建APP自己的登录账号体系.
实现第三方登录主要通过下面两步:

  • 在第三方平台完成授权
  • 获取第三方平台的accesstoken信息及用户资料

1.1第三方登录支持的平台

目前友盟社会化组件支持的第三方登录平台为:新浪微博、微信、QQ、QQ空间、腾讯微博、人人网、豆瓣、Facebook、Twitter.

2.新浪微博登录

在AppDelegate应用入口方法添加下面的方法:

//设置分享到QQ/Qzone的应用Id,和分享url 链接
    #import "UMSocialQQHandler.h"
    [UMSocialSinaSSOHandler openNewSinaSSOWithAppKey:@"新浪 appkey"
                                              secret:@"新浪secret"
                                         RedirectURL:@"http://sns.whalecloud.com/sina2/callback"];

在新浪微博登录按钮中实现下面的方法:

UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToSina];

        snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){

//          获取微博用户名、uid、token等

            if (response.responseCode == UMSResponseCodeSuccess) {

                UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:UMShareToSina];

                NSLog(@"username is %@, uid is %@, token is %@ url is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL);

            }});

删除授权调用下面的方法:

[[UMSocialDataService defaultDataService] requestUnOauthWithType:UMShareToSina  completion:^(UMSocialResponseEntity *response){
        NSLog(@"response is %@",response);
    }];

3.QQ及Qzone登录

QQ登录只支持SSO登录方式,必须具备手机QQ客户端,Qzone默认调用SSO登录.
添加配置文件参考文档:添加QQ及Qzone,添加相关库文件,配置URL schemes及添加系统回调,在AppDelegate应用入口方法添加下面的方法:

//设置分享到QQ/Qzone的应用Id,和分享url 链接
    #import "UMSocialQQHandler.h"
    [UMSocialQQHandler setQQWithAppId:@"qq id" appKey:@"qq apply" url:@"http://www.umeng.com/social"];

在QQ登录按钮中实现下面的方法:

UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToQQ];

        snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){

//          获取微博用户名、uid、token等

            if (response.responseCode == UMSResponseCodeSuccess) {

                UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:UMShareToQQ];

                NSLog(@"username is %@, uid is %@, token is %@ url is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL);

            }});

在Qzone登录按钮中实现下面的方法:

UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToQzone];

        snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){

//          获取微博用户名、uid、token等

            if (response.responseCode == UMSResponseCodeSuccess) {

                UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:UMShareToQzone];

                NSLog(@"username is %@, uid is %@, token is %@ url is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL);

            }});
  • 在SDK5.0及之后的版本中,用户信息都直接在授权之后便会返回,可以在snsAccount里获取全部的用户信息资料.
  • Qzone将UMShareToQQ替换为UMShareToQzone即可.

4.微信登录

添加配置文件参考文档:添加微信及朋友圈,添加相关库文件,配置URL schemes及添加系统回调:

  • 注意微信登录必须先在微信开放平台申请微信登录权限
    在你的程序APPdelegate入口方法添加下面的代码:
 #import "UMSocialWechatHandler.h"
    //设置微信AppId、appSecret,分享url
    [UMSocialWechatHandler setWXAppId:@"wxd930ea5d5a258f4f" appSecret:@"db426a9829e4b49a0dcac7b4162da6b6" url:@"http://www.umeng.com/social"];

在微信登录按钮中实现下面的方法:

  UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToWechatSession];

        snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){

            if (response.responseCode == UMSResponseCodeSuccess) {

                UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary]valueForKey:UMShareToWechatSession];

                NSLog(@"username is %@, uid is %@, token is %@ url is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL);

            }
 });
  • 在SDK5.0及之后的版本中,用户信息都直接在授权之后便会返回,可以在snsAccount里获取全部的用户信息资料.

八、关于提交项目进行苹果审核

使用微信分享、登录必须安装微信客户端,QQ登录、QQ空间分享过程中必须安装手机QQ客户端,在未安装客户端的设备上测试会提示下载,这是不符合苹果审核规则的。这是微信及腾讯QQ互联导致的问题。 解决方案: 首先调用微信SDK或QQ互联SDK的方法检测是否安装微信/QQ客户端:

  [QQApiInterface isQQInstalled];

如果未安装客户端则隐藏对应登录或分享按钮。

你可能感兴趣的:(收藏,iOS,友盟,第三方登录)