因為之前只需要分享到QQ/微信/新浪等,這些直接按照友盟的文檔來寫就行了段化。但是分享FaceBook的話有所不同嘁捷,會遇到各種各樣的問題,被狠狠折騰了一番显熏。
本來想從頭到尾寫完整版的雄嚣,又一想到自己去百度/谷歌搜索都是這樣的文章〈。基礎(chǔ)的東西都是差不多的缓升,實在沒什么必要。所以我就寫一些我認為很重要的東西吧蕴轨。
一. 設(shè)置Facebook的appKey和UrlString
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Facebook appKey:@"506027402887373" appSecret:nil redirectURL:@"http://www.umeng.com/social"];
這里注意不需要秘鑰Secret
港谊,url填寫為你在FaceBook里邊填寫的那個就可以了。
二. 除配置URL Scheme外橙弱,F(xiàn)acebook SDK還要求在info.plist文件中加入FacebookAppID和FacebookDisplayName兩項參數(shù)
配置info.plist
* 除配置URL Scheme外歧寺,F(xiàn)acebook SDK還要求在info.plist文件中加入兩項參數(shù),分別是:
* FacebookAppID
* FacebookDisplayName
* 以上參數(shù)值是在Facebook開發(fā)者平臺[https://developers.facebook.com/apps](https://developers.facebook.com/apps) 設(shè)置并獲取對應(yīng)的`AppID`和`Display Name`
* 如U-Share Demo的測試AppID為506027402887373棘脐, Display Name為UmengShare斜筐。則加入兩項參數(shù)為
* FacebookAppID : 506027402887373
* FacebookDisplayName : UmengShare
U-Share 6.9.3更新Facebook說明
Facebook SDK版本:4.33.0。在2018年中Facebook對SDK進行了重大改動蛀缝,詳情見 [https://developers.facebook.com/docs/graph-api/changelog/breaking-changes/?translation](https://developers.facebook.com/docs/graph-api/changelog/breaking-changes/?translation)
三. URL Types
四. 白名單的配置
怎么打開白名單我就不寫了顷链,友盟給的白名單可能在實際調(diào)試的時候有點問題,所以這里一下給你關(guān)于FaceBook所有的
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fb-messenger-share-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
<string>fbapi20130214</string>
<string>fbapi20130410</string>
<string>fbapi20130702</string>
<string>fbapi20131010</string>
<string>fbapi20131219</string>
<string>fbapi20140410</string>
<string>fbapi20140116</string>
<string>fbapi20150313</string>
<string>fbapi20150629</string>
<string>fbapi20160328</string>
<string>fbauth</string>
<string>fb-messenger-api20140430</string>
<string>fb-messenger-platform-20150128</string>
<string>fb-messenger-platform-20150218</string>
<string>fb-messenger-platform-20150305</string>
當(dāng)然屈梁,你也可以參考FaceBook官方給的白名單配置:白名單 (需要翻墻)
五. 敲黑板嗤练!敲黑板!敲黑板俘闯!調(diào)用FaceBook的分享潭苞!
我之前使用的友盟來調(diào)用FaceBook分享
先說有一下我遇到的問題:
- 未安裝FaceBook App時忽冻,有些版本的iPhone無法打開web頁面進行登錄授權(quán)真朗。
- 安裝FaceBook App但是未登錄時,有些版本的iPhone無法打開web頁面進行登錄請求僧诚。
- 安裝FaceBook App并且登錄時候遮婶,分享到FaceBook的鏈接不能包含中文蝗碎,不然分享鏈接直接失效不顯示了。
因為我本來就是自己寫的分享面板旗扑,所以關(guān)于第一第二個問題的解決方案是蹦骑,在判斷當(dāng)前是分享到FaceBook時,調(diào)用FaceBook自己的分享臀防,不使用友盟的分享方法眠菇。
1. 添加頭文件
友盟的包里就有不用單獨下載,直接寫就行了袱衷。
#import <FBSDKShareKit/FBSDKShareKit.h>
2. 調(diào)用FaceBook的原生分享
FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
NSString *urlStr = [weakSelf.urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
content.contentURL = [NSURL URLWithString:urlStr];
FBSDKShareDialog *dialog = [[FBSDKShareDialog alloc] init];
dialog.fromViewController = self;
dialog.shareContent = content;
if ([[UMSocialManager defaultManager] isInstall:UMSocialPlatformType_Facebook]) {
dialog.mode = FBSDKShareDialogModeNative;
} else {
dialog.mode = FBSDKShareDialogModeAutomatic;
}
[dialog show];
先去用友盟的方法判斷是否安裝了FaceBook捎废,如果沒安裝就使用FBSDKShareDialogModeAutomatic
安裝了FaceBook就使用FBSDKShareDialogModeNative
這個dialog.mode
是個枚舉,有Automatic致燥、Navtive登疗、ShareSheet、Browser嫌蚤、Web......官方給的方法里是使用FBSDKShareDialogModeShareSheet
辐益,但是它是在你的App內(nèi)部打開一個fb的分享面板給你使用,并不會跳轉(zhuǎn)到FaceBook內(nèi)脱吱,所以你沒登錄的話智政,不會有任何反應(yīng)~
然后換成dialog.mode = FBSDKShareDialogModeNative;
只要安裝了FaceBook就一定打開原生,GOOD!
最后:
關(guān)于友盟分享的配置箱蝠,以及FaceBook的分享女仰,可以參考以下內(nèi)容:
友盟第三方分享、授權(quán)
關(guān)于友盟Facebook分享的問題
iOS中Facebook登錄相關(guān)知識碎片整理(三方登錄SDK為友盟)
iOS Facebook 分享中的坑
2018-01-16 集成友盟分享抡锈、登錄疾忍、統(tǒng)計