使用友盟分享到FaceBook總結

因為之前只需要分享到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

URL Types.jpg

四. 白名單的配置

怎么打開白名單我就不寫了,友盟給的白名單可能在實際調試的時候有點問題,所以這里一下給你關于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分享

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

  1. 未安裝FaceBook App時,有些版本的iPhone無法打開web頁面進行登錄授權。
  2. 安裝FaceBook App但是未登錄時,有些版本的iPhone無法打開web頁面進行登錄請求。
  3. 安裝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)計

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容