因為之前只需要分享到QQ/微信/新浪等,這些直接按照友盟的文檔來寫就行了。但是分享FaceBook的話有所不同,會遇到各種各樣的問題,被狠狠折騰了一番。
本來想從頭到尾寫完整版的,又一想到自己去百度/谷歌搜索都是這樣的文章。基礎的東西都是差不多的,實在沒什么必要。所以我就寫一些我認為很重要的東西吧。
一. 設置Facebook的appKey和UrlString
[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Facebook appKey:@"506027402887373" appSecret:nil redirectURL:@"http://www.umeng.com/social"];
這里注意不需要秘鑰Secret,url填寫為你在FaceBook里邊填寫的那個就可以了。
二. 除配置URL Scheme外,Facebook SDK還要求在info.plist文件中加入FacebookAppID和FacebookDisplayName兩項參數
配置info.plist
* 除配置URL Scheme外,Facebook SDK還要求在info.plist文件中加入兩項參數,分別是:
* FacebookAppID
* FacebookDisplayName
* 以上參數值是在Facebook開發(fā)者平臺[https://developers.facebook.com/apps](https://developers.facebook.com/apps) 設置并獲取對應的`AppID`和`Display Name`
* 如U-Share Demo的測試AppID為506027402887373, Display Name為UmengShare。則加入兩項參數為
* 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

四. 白名單的配置
怎么打開白名單我就不寫了,友盟給的白名單可能在實際調試的時候有點問題,所以這里一下給你關于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>
當然,你也可以參考FaceBook官方給的白名單配置:白名單 (需要翻墻)
五. 敲黑板!敲黑板!敲黑板!調用FaceBook的分享!
我之前使用的友盟來調用FaceBook分享
先說有一下我遇到的問題:
- 未安裝FaceBook App時,有些版本的iPhone無法打開web頁面進行登錄授權。
- 安裝FaceBook App但是未登錄時,有些版本的iPhone無法打開web頁面進行登錄請求。
- 安裝FaceBook App并且登錄時候,分享到FaceBook的鏈接不能包含中文,不然分享鏈接直接失效不顯示了。
因為我本來就是自己寫的分享面板,所以關于第一第二個問題的解決方案是,在判斷當前是分享到FaceBook時,調用FaceBook自己的分享,不使用友盟的分享方法。
1. 添加頭文件
友盟的包里就有不用單獨下載,直接寫就行了。
#import <FBSDKShareKit/FBSDKShareKit.h>
2. 調用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內部打開一個fb的分享面板給你使用,并不會跳轉到FaceBook內,所以你沒登錄的話,不會有任何反應~
然后換成dialog.mode = FBSDKShareDialogModeNative; 只要安裝了FaceBook就一定打開原生,GOOD!
最后:
關于友盟分享的配置,以及FaceBook的分享,可以參考以下內容:
友盟第三方分享、授權
關于友盟Facebook分享的問題
iOS中Facebook登錄相關知識碎片整理(三方登錄SDK為友盟)
iOS Facebook 分享中的坑
2018-01-16 集成友盟分享、登錄、統(tǒng)計