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); }]; 
相關文章
相關標籤/搜索