UM_第三方登陆

参考官方文档(http://dev.umeng.com/social/ios/detail-share#7), 作出如下总结.java

  第三方登陆主要用于简化用户登陆流程,经过用户拥有的微博、QQ、微信等第三方帐号进行登陆而且构建APP本身的登陆帐号体系。ios

实现第三方登陆主要经过下面两步:c++

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

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

/// 1. -----------------------   QQ 受权登陆微信

   QQ登陆只支持 SSO登陆方式, 必须具有手机QQ客户端, QZone 默认采用SSO登陆app

1.1 添加库文件ui

  在UMSocial_Sdk_Extra_Frameworks目录下的,添加TencentOpenAPI文件夹到工程url

1.2 添加系统支持库spa

    • Security.framework
    • libiconv.dylib
    • SystemConfiguration.framework
    • CoreGraphics.Framework
    • libsqlite3.dylib
    • CoreTelephony.framework
    • libstdc++.dylib
    • libz.dylib

1.3 添加QQ及Qzone到分享列表code

  在AppDelegate应用入口方法打开集成手机QQ、Qzone开关

//设置分享到QQ/Qzone的应用Id,和分享url 连接 #import "UMSocialQQHandler.h" [UMSocialQQHandler setQQWithAppId:@"100424468" appKey:@"c7394704798a158208a74ab60104f0ba" url:@"http://www.umeng.com/social"];
    • 若是不添加上面的代码,则分享列表中不会出现QQ及Qzone图标

    • URL必须为http连接,若是设置为nil则默认为友盟官网连接

1.4 配置URL schemes

  在Xcode中一共须要配置两次: (1)设置Xcode的url scheme格式为“QQ”+腾讯QQ互联应用appId转换成十六进制(不足8位前面补0),例如“QQ05FC5B14”; (2) 额外设置 url schemes 的格式为"tencent"+腾讯QQ互联应用appId,例如“tencent100424468”.

  在QQ互联后台须要设置一次: QQ互联后台的URL schema中填入字符串与(1)保持一致:格式为“QQ”+腾讯QQ互联应用appId转换成十六进制(不足8位前面补0),例如“QQ05FC5B14”。

[注意1]: 若是 URL schemes 配置错误,则分享完成后没法返回应用, 登陆功能也不能开启.

[注意2]: (可选) 在Xcode 6.0建立工程时,须要在info.plist文件中, 添加 Bundle display name属性值。 ---  用于显示分享后, 本App的名称 (再次设置的名称, 会显示在分享来源中).

1.5 代码设置

  • 添加系统回调

在APPdelegate中实现下面的方法

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [UMSocialSnsService handleOpenURL:url]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [UMSocialSnsService handleOpenURL:url]; } 
  • 设置分享内容

  默认分享样式

  使用友盟默认分UI界面,添加下面代码

[UMSocialSnsService presentSnsIconSheetView:self appKey:你的友盟应用Appkey shareText:@"友盟社会化分享让您快速实现分享等社会化功能,www.umeng.com/social" shareImage:[UIImage imageNamed:@"icon.png"] shareToSnsNames:@[UMShareToQQ,UMShareToQzone] delegate:self]; //实现回调方法(可选): -(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response { //根据`responseCode`获得发送结果,若是分享成功 if(response.responseCode == UMSResponseCodeSuccess) { //获得分享到的微博平台名 NSLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]); } }

[注意]: Qzone分享文字与图片缺一不可,不然会出现错误码10001

/// -- 2. 微信 要实现第三方登陆功能, 须要认证开发者, 每一年须要交300RMB.

/// -- 3. 新浪微博  --  步骤与QQ的登陆设置基本一致;

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

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); }}); 

在受权完成后调用获取用户信息的方法

//获取accestoken以及新浪用户信息,获得的数据在回调Block对象形参respone的data属性 [[UMSocialDataService defaultDataService] requestSnsInformation:UMShareToSina completion:^(UMSocialResponseEntity *response){ NSLog(@"SnsInformation is %@",response.data); }]; 

获取好友列表调用下面的方法,因为新浪官方限制,获取好友列表只能获取到30%好友

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

删除受权调用下面的方法

[[UMSocialDataService defaultDataService] requestUnOauthWithType:UMShareToSina  completion:^(UMSocialResponseEntity *response){
        NSLog(@"response is %@",response); }]; 
相关文章
相关标签/搜索