適合剛開始接觸第三方登錄與分享的IOS小白!!
這兩天看了一下有關IOS第三方登錄與分享的一些知識,發現在QQ開放平台與微信開放平台實現這些功能很繁瑣,不容易實現,在導師的推薦下,找到了這樣一個平台
http://mob.com MOB雲平台,通過這一個平台就可以實現大部分的第三方登錄與分享,比如常見的QQ,微信,新浪微博等等.
廢話不多說,開始吧!先說第三方分享吧!
一 .第三方分享
1.獲取AppKey
在Mob的官網注冊應用得到appkey,請點擊鏈接看里面的操作步驟。
2.下載SDK
具體參照Mob官網.
3.集成
1.將下載好的SDK導入你的項目
2.添加依賴庫(每個平台所需庫不一樣,這里是新浪微博與QQ,微信所需的庫)
3.設置ShareSDK的Appkey並初始化對應的第三方社交平台 打開*AppDelegate.m(*代表你的工程名字)導入頭文件
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. /** * 設置ShareSDK的appKey * 在將生成的AppKey傳入到此方法中。 * 方法中的第二個第三個參數為需要連接社交平台SDK時觸發, * 在此事件中寫入連接代碼。第四個參數則為配置本地社交平台時觸發,根據返回的平台類型來配置平台信息。 * 如果您使用的時服務端托管平台信息時,第二、四項參數可以傳入nil,第三項參數則根據服務端托管平台來決定要連接的社交SDK。 */ [ShareSDK registerApp:@"1c72a06f47e6c" activePlatforms:@[@(SSDKPlatformTypeSinaWeibo), @(SSDKPlatformTypeWechat), @(SSDKPlatformTypeQQ)] onImport:^(SSDKPlatformType platformType) { switch (platformType) { case SSDKPlatformTypeWechat: [ShareSDKConnector connectWeChat:[WXApi class]]; break; case SSDKPlatformTypeQQ: [ShareSDKConnector connectQQ:[QQApiInterface class]tencentOAuthClass:[TencentOAuth class]]; break; case SSDKPlatformTypeSinaWeibo: [ShareSDKConnector connectWeibo:[WeiboSDK class]]; break; default: break; } } onConfiguration:^(SSDKPlatformType platformType, NSMutableDictionary *appInfo) { switch (platformType) { case SSDKPlatformTypeWechat: [appInfo SSDKSetupWeChatByAppId:@"wx4868b35061f87885" appSecret:@"64020361b8ec4c99936c0e3999a9f249"]; break; case SSDKPlatformTypeQQ: [appInfo SSDKSetupQQByAppId:@"100371282" appKey:@"aed9b0303e3ed1e27bae87c33761161d" authType:SSDKAuthTypeBoth]; break; case SSDKPlatformTypeSinaWeibo: //設置新浪微博應用信息,其中authType設置為使用SSO+Web形式授權 [appInfo SSDKSetupSinaWeiboByAppKey:@"568898243" appSecret:@"38a4f8204cc784f81f9f0daaf31e02e3" redirectUri:@"http://www.sharesdk.cn" authType:SSDKAuthTypeBoth]; break; default: break; } }]; return YES; }
4.添加實現代碼 打開需要集成分享功能的視圖源碼
- (IBAction)actionBtnShare:(id)sender { NSLog(@"點擊了分享"); //1、創建分享參數 NSArray* imageArray = @[[UIImage imageNamed:@"shareImg"]]; //(注意:圖片必須要在Xcode左邊目錄里面,名稱必須要傳正確,如果要分享網絡圖片,可以這樣傳iamge參數 images:@[@"http://mob.com/Assets/images/logo.png?v=20150320"]) if (imageArray) { NSMutableDictionary *shareParams = [NSMutableDictionary dictionary]; [shareParams SSDKSetupShareParamsByText:@"分享內容" images:imageArray url:[NSURL URLWithString:@"http://mob.com"] title:@"分享標題" type:SSDKContentTypeAuto]; //有的平台要客戶端分享需要加此方法,例如微博 [shareParams SSDKEnableUseClientShare]; //2、分享(可以彈出我們的分享菜單和編輯界面) /** * 顯示分享菜單 * * view 要顯示菜單的視圖, iPad版中此參數作為彈出菜單的參照視圖 * items 菜單項,如果傳入nil,則顯示已集成的平台列表 * shareParams 分享內容參數 * shareStateChangedHandler 分享狀態變更事件 * * 分享菜單控制器 */ SSUIShareActionSheetController *sheet = [ShareSDK showShareActionSheet:nil items:nil shareParams:shareParams onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end) { switch (state) { case SSDKResponseStateSuccess: { NSLog(@"分享成功"); break; } case SSDKResponseStateFail: { NSLog(@"分享失敗"); break; } default: break; } } ]; //默認都是跳轉到APP的編輯頁面去編輯的 //加了這個方法之后可以不跳分享編輯界面,直接點擊分享菜單里的選項,直接分享 //[sheet.directSharePlatforms addObject:@(SSDKPlatformTypeSinaWeibo)]; //默認微信,QQ,QQ空間都是直接跳客戶端分享,加了這個方法之后,可以跳分享編輯界面分享 //[sheet.directSharePlatforms removeObject:@(SSDKPlatformTypeWechat)]; } }
代碼到這里就結束了,看一下最終效果:
4.注意事項:
1.微信,QQ這些第三方平台要實現分享必須添加各自真實的URL Types(圖片里面的是測試KEY,可以使用)
我這里只是簡略的配了下圖,具體的見MobIOS集成手冊 http://wiki.mob.com/ios簡潔版快速集成/
2.plist 文件的配置
添加白名單:
這里的白名單僅僅是新浪微博與QQ,微信的數據,其他平台的數據見Mob集成注意手冊.
3.新浪微博SDK需要在項目Build Settings中的Other Linker Flags添加"-ObjC"
4.如果出現的分享頁面不是中文,這樣設置:
二.第三方登錄
如果你已經實現了第三方分享,那么實現第三方登錄將十分簡單
其他配置一樣,只是實現的代碼需要修改
//QQ 登錄 - (IBAction)actionBtnLogin:(id)sender { NSLog(@"點擊了登錄"); //QQ登錄 [ShareSDK getUserInfo:SSDKPlatformTypeQQ onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error) { if (state == SSDKResponseStateSuccess) { NSLog(@"uidQQ=%@",user.uid); NSLog(@"credentialQQ=%@",user.credential); NSLog(@"tokenQQ=%@",user.credential.token); NSLog(@"nicknameQQ=%@",user.nickname); _showText.text = [NSString stringWithFormat:@"歡迎您,%@",user.nickname]; } else { NSLog(@"%@",error); } }]; }
//微信登錄
//微信登錄 - (IBAction)actionWeixinLogin:(id)sender { //QQ登錄 [ShareSDK getUserInfo:SSDKPlatformTypeWechat onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error) { if (state == SSDKResponseStateSuccess) { NSLog(@"uidWechat=%@",user.uid); NSLog(@"credentialWechat=%@",user.credential); NSLog(@"tokenWechat=%@",user.credential.token); NSLog(@"nicknameWechat=%@",user.nickname); _showText.text = [NSString stringWithFormat:@"歡迎您,%@",user.nickname]; } else { NSLog(@"%@",error); } }]; }
效果圖:
2019.5.17 更新:代碼已經很老了,可能有的代碼會報錯,最好去MOB官網看看如何集成!