參考官方文檔(http://dev.umeng.com/social/ios/detail-share#7), 作出如下總結.java
第三方登陸主要用於簡化用戶登陸流程,經過用戶擁有的微博、QQ、微信等第三方帳號進行登陸而且構建APP本身的登陸帳號體系。ios
實現第三方登陸主要經過下面兩步:c++
目前友盟社會化組件支持的第三方登陸平臺爲:新浪微博、微信、QQ、QQ空間、騰訊微博、人人網、豆瓣、Facebook、Twittersql
/// 1. ----------------------- QQ 受權登陸微信
QQ登陸只支持 SSO登陸方式, 必須具有手機QQ客戶端, QZone 默認採用SSO登陸app
1.1 添加庫文件ui
在UMSocial_Sdk_Extra_Frameworks
目錄下的,添加TencentOpenAPI
文件夾到工程url
1.2 添加系統支持庫spa
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 配置錯誤,則分享完成後沒法返回應用, 登陸功能也不能開啓.
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); }];