日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用ShareSDK完成第三方(QQ、微信、微博)登录和分享

發布時間:2025/3/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用ShareSDK完成第三方(QQ、微信、微博)登录和分享 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這幾天遇到一個需求:做第三方登錄和分享。遇到了一些坑,把整個過程整理記錄下來,方便他人,同時也捋一下思路。

當時考慮過把每個平臺的SDK下載下來,一個一個弄,一番取舍后決定還是用ShareSDK。這里只做了微博、微信和QQ。過程如下:

1.去ShareSDK官網注冊一個賬號方便以后對ShareSDK的配置。

2.按照集成文檔的步驟開始做,不得不說這個集成文檔里面有坑,有坑的地方我會指出。

文檔中心

3.添加一個應用。有很多種方式可以添加一個應用,多點點。這里我創建了一個test應用。

添加應用

創建后進去的頁面如下:

應用概況

這里的App Key和App Secret(不顯示的話,點擊顯示)很重要,可以用來初始化ShareSDK,

4.下載SDK。

下載SDK

這里是第一個坑,雖然你可以自定義下載SDK,如果你做QQ分享和登錄,一定不要忘記下載QQ空間的SDK。因為QQ本身不支持第三方登錄,但支持第三方分享包括QQ空間分享,QQ空間支持第三方登錄,所以如果你做QQ分享和登錄,一定要記得下載QQ空間的SDK。如果只做分享,那只下載QQ的就行。這里我被坑過,ShareSDK提供的文檔里面沒有說明。

自定義下載SDK

下載后的SDK文件目錄:

下載后的SDK文件目錄

5.把下載的ShareSDK添加到項目中。

項目中的ShareSDK

到現在為止運行項目是會報錯的,原因是沒有添加相關的依賴庫。

6.添加相關的依賴庫。

以下摘自ShareSDK提供的文檔。

必須添加的依賴庫如下:

SystemConfiguration.framework QuartzCore.framework CoreTelephony.framework libicucore.dylib libz.1.2.5.dylib Security.framework

以下依賴庫根據社交平臺添加
新浪微博SDK依賴庫 (從v2.10.5開始)

ImageIO.framework

QQ好友和QQ空間SSO必要(新注冊騰訊開放平臺帳號只支持SSO授權,只是老開發者才可以使用網頁授權)

libstdc++.dylib libsqlite3.dylib

添加相應依賴庫后的項目結構是這個樣子的:

添加相應依賴庫后項目結構
到這里運行項目是不會報錯的,如果報錯,檢查添加的依賴庫是缺了、漏了、還是錯了。

在AppDelegate.m中添加以下頭文件,再運行項目看看,這是不會報錯的,如果報錯看提示信息,多搜索,相信是能夠解決的。

#import <ShareSDK/ShareSDK.h> #import <TencentOpenAPI/QQApiInterface.h> #import <TencentOpenAPI/TencentOAuth.h> #import "WXApi.h" #import "WeiboSDK.h"

7.到相應開發者平臺注冊開發者賬號,并添加你要進行分享和使用第三方登錄應用的信息。

添加新浪微博應用 注冊網址?http://open.weibo.com
添加QQ應用 注冊網址?http://mobile.qq.com/api/
添加微信應用?http://open.weixin.qq.com

注意:這三家的開放平臺,目前為止,頁面做的都跟山寨網站似的(微信的好一點),奇卡無比。當然這不是吐槽的重點,重點是注冊流程繁瑣,還要認證開發者身份,需要等一個工作日。其中如果做微信登錄的話,每年要交300元的什么費。這里沒有什么難度就是個體力活,就不詳說了,有什么疑問,請留言,你的留言也是對我的信任和支持。

注冊完,申請完就可以拿到AppID、AppSecret、AppKey等東西。

微博的 QQ的 微信的

注:QQ的AppKey在ShareSDK中叫AppSecret。名字不統一,這個比較扯淡。

拿到這些AppID、AppSecret、AppKey等東西后就可以開始對ShareSDK進行初始化。

在AppDelegate.m中添加下面這個方法,并記得在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中調用。

- (void)initShareSDK {[ShareSDK registerApp:@"884a1b86xxxx"];//對新浪微博SDK進行初始化[ShareSDK connectSinaWeiboWithAppKey:@"406116xxxx"appSecret:@"b6a542582057e39a6fca582b14dxxxxxx"redirectUri:@"http://www.xxxx.com"];//注這里的redirectUri要與你在新浪微博開放平臺上填寫的那個授權回調頁的URL保持一致,否則在使用微博登錄的時候會報一個redirectUri找不到的錯誤,這里是一個坑。//突然發現這里redirectUri是什么鬼?難道ShareSDK的制作者敲錯了?不應該是URL嗎?//QQ分享SDK初始化[ShareSDK connectQQWithQZoneAppKey:@"110467xxxx"qqApiInterfaceCls:[QQApiInterface class]tencentOAuthCls:[TencentOAuth class]];//QQ登錄SDK初始化[ShareSDK connectQZoneWithAppKey:@"1104677455"appSecret:@"KnjAB2I0G8Vxxxxx"qqApiInterfaceCls:[QQApiInterface class]tencentOAuthCls:[TencentOAuth class]];// 注:QQ登錄的appSecret參數,是你在QQ開放平臺是拿到的AppKey//對微信SDK進行初始化[ShareSDK connectWeChatWithAppId:@"wx02e84c8fa45xxxx"appSecret:@"ef9006286ce2637caeb648cb58dxxxx"wechatCls:[WXApi class]]; }

8.添加URL Schemes。
點擊:項目名 > TARGETS > info > URL Types 點擊添加URL Types。
如圖:

添加URL Schemes

在URL Schemes后面的框里添上對應信息。

新浪微博的URL Schemes是:wb 加上在微博開放平臺申請的AppKey。 微信的URL Schemes是:微信開放平臺申請的AppID。 QQ空間的URL Schemes是:QQ開放平臺申請的 tencent 加上 AppID。(如果只做分享的話,可以不添加,做登錄的話必須添加) QQ的URL Schemes是:QQ 加上 AppID的16進制(如果AppID轉換的16進制數不夠8位則在前面補0,如轉換的是:5FB8B52,則最終填入為:QQ05FB8B52 注意:轉換后的字母要大寫)

轉換16進制的方法:echo 'ibase=10;obase=16;801312852'|bc,其中801312852為QQ的AppID,見下圖:

QQ URLSchemes

添加完URL Schemes后,在AppDelegate.m文件中添加以下對URL處理的代碼:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {return [ShareSDK handleOpenURL:url wxDelegate:self]; }- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [ShareSDK handleOpenURL:urlsourceApplication:sourceApplicationannotation:annotationwxDelegate:self];}

到此第三方的準備工作就算是做完了。

9.寫分享的代碼。

(1)在界面上添加按鈕,并綁定響應事件。
(2)寫事件處理代碼。

事件處理代碼,如下:

- (void)thridPartyShareWithShareType:(ShareType)shareType {//只需要在響應分享按鈕的方法中添加以下代碼即可NSString *img = [[NSBundle mainBundle] pathForResource:@"mm" ofType:@"png"];//構造分享內容id<ISSContent> publishContent = [ShareSDK content:@"ShareSDK無比強大哦"defaultContent:@""image:[ShareSDK imageWithPath:img]title:@"演示Demo中的標題"url:@"http://www.mob.com"description:@"測試DEMO正在制作中,歡迎大家觀看"mediaType:SSPublishContentMediaTypeNews];[ShareSDK shareContent:publishContenttype:shareTypeauthOptions:nilshareOptions:nilstatusBarTips:YESresult:^(ShareType type, SSResponseState state, id<ISSPlatformShareInfo> statusInfo, id<ICMErrorInfo> error, BOOL end) {if (state == SSPublishContentStateSuccess){NSLog(NSLocalizedString(@"TEXT_SHARE_SUC", @"發表成功"));}else if (state == SSPublishContentStateFail){NSLog(NSLocalizedString(@"TEXT_SHARE_FAI", @"發布失敗!error code == %d, error code == %@"), [error errorCode], [error errorDescription]);}}];}

方法中的shareType參數傳什么值就分享到什么平臺:

ShareTypeSinaWeibo //新浪微博 ShareTypeQQSpace //QQ空間 (注意:填寫這個類型就可以分享到好友和QQ空間,也可以用來做登錄) ShareTypeWeixiSession //微信好友 (這個類型也可以用來做微信登錄) ShareTypeWeixiTimeline //微信朋友圈
到這里分享就算是做好了。

</br>
10.寫登錄代碼。(這里在ShareSDK的文檔里,又有一個坑)
(1)在ShareSDK做第三方登錄的文檔里,這里要求去一個Parse的網站注冊下載一大堆東西。并添加一堆依賴庫,可這些并沒有什么卵用。理由如下:

它讓在應用了集成Parse,就是做一個對第三方平臺返回的信息(id、nickname、profileImage)進行存儲,可這些,我們都是存自己公司服務器的,做這些都是扯淡的,但文檔里并沒有說明。我靠,讓我郁悶半天。

(2)在界面添加按鈕,并綁定響應事件。
(3)寫響應代碼(以QQ登錄為例,三個平臺的代碼是一樣的,不同點在Type這個參數上)。

- (IBAction)QQLogin:(UIButton *)sender {[ShareSDK getUserInfoWithType:ShareTypeQQSpace authOptions:nil result:^(BOOL result, id<ISSPlatformUser> userInfo, id<ICMErrorInfo> error) {if (result) {NSLog(@"%hhd", result);NSLog(@"%@", [userInfo uid]);NSLog(@"%@", [userInfo nickname]);NSLog(@"%@", [userInfo profileImage]);//在這里把拿到的userInfo里面的值做處理,存服務器或者什么的 UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"Hello"message:@"歡迎注冊"delegate:nilcancelButtonTitle:@"知道了"otherButtonTitles: nil];[alertView show];} else {UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"Hello"message:@"歡迎回來"delegate:nilcancelButtonTitle:@"知道了"otherButtonTitles:nil];[alertView show];}}]; }

到這里第三方登錄就算是做好了。</br>
最后,退出登錄授權使用一下代碼。

[ShareSDK cancelAuthWithType:ShareTypeQQSpace]; //這里以QQ為例了

?

轉載于:https://www.cnblogs.com/kiimi/p/8610772.html

總結

以上是生活随笔為你收集整理的使用ShareSDK完成第三方(QQ、微信、微博)登录和分享的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。