使用友盟分享到FaceBook總結(jié)

因為之前只需要分享到QQ/微信/新浪等,這些直接按照友盟的文檔來寫就行了。但是分享FaceBook的話有所不同,會遇到各種各樣的問題,被狠狠折騰了一番。

本來想從頭到尾寫完整版的,又一想到自己去百度/谷歌搜索都是這樣的文章?;A(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

URL Types.jpg

四. 白名單的配置

怎么打開白名單我就不寫了,友盟給的白名單可能在實際調(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>

當然,你也可以參考FaceBook官方給的白名單配置:白名單 (需要翻墻)

五. 敲黑板!敲黑板!敲黑板!調(diào)用FaceBook的分享!

我之前使用的友盟來調(diào)用FaceBook分享

先說有一下我遇到的問題:

  1. 未安裝FaceBook App時,有些版本的iPhone無法打開web頁面進行登錄授權(quán)。
  2. 安裝FaceBook App但是未登錄時,有些版本的iPhone無法打開web頁面進行登錄請求。
  3. 安裝FaceBook App并且登錄時候,分享到FaceBook的鏈接不能包含中文,不然分享鏈接直接失效不顯示了。

因為我本來就是自己寫的分享面板,所以關(guān)于第一第二個問題的解決方案是,在判斷當前是分享到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)計

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容