FBSDK ShareDialog 显示“无效的应用程序 ID:提供的应用程序 ID 看起来不像有效的应用程序 ID。”

Posted

技术标签:

【中文标题】FBSDK ShareDialog 显示“无效的应用程序 ID:提供的应用程序 ID 看起来不像有效的应用程序 ID。”【英文标题】:FBSDK ShareDialog is showing "Invalid App ID: The provided app ID does not look like a valid app ID." 【发布时间】:2018-05-11 11:50:44 【问题描述】:

我正在尝试在我的 react-native 应用程序(现在只是 ios)中使用 FBSDK ShareDialog,当我打开 ShareDialog 时,我一直看到“无效的应用程序 ID”消息。我将指定的代码添加到我的 info.plist 文件中,但我的 Facebook 应用程序未处于沙盒模式;我一直无法找到解决此问题的方法。

我的 ShareDialog 代码:

const shareLinkContent = 
  contentType: 'link',
  contentUrl: "http://google.com",
  contentDescription: "The world's most popular search engine"
;

ShareDialog.setMode("webview");
ShareDialog.canShow(shareLinkContent).then(function(canShow) 
    if (canShow) 
      return ShareDialog.show(shareLinkContent);
     else 
      self.props.navigation.navigate('Notifications',  notifications: updatedNotifications );
    
  ).then(function(result) 
    if (result.isCancelled) 
      console.log('Share cancelled');
     else 
      console.log('Share success with postId: ' + result.postId);
    
  ,
  function(error) 
    console.log('Share fail with error: ' + error);
  
);

我的 info.plist 文件:

 version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>CFBundleURLTypes</key>
  <array>
    <dict>
      <key>CFBundleURLSchemes</key>
      <array>
        <string>fb My App's Facebook App ID </string>
      </array>
    </dict>
  </array>
  <key>FacebookAppID</key>
  <string> My App's Facebook App ID </string>
  <key>FacebookDisplayName</key>
  <string> My App's Display Name </string>
  <key>LSApplicationQueriesSchemes</key>
  <array>
    <string>fbapi</string>
    <string>fb-messenger-api</string>
    <string>fbauth2</string>
    <string>fbshareextension</string>
  </array>
    <key>CFBundleDevelopmentRegion</key>
    <string>en</string>
    <key>CFBundleDisplayName</key>
    <string> My App's Display Name </string>
    <key>CFBundleExecutable</key>
    <string>$(EXECUTABLE_NAME)</string>
    <key>CFBundleIdentifier</key>
    <string>org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>$(PRODUCT_NAME)</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleShortVersionString</key>
    <string>1.0</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleVersion</key>
    <string>1</string>
    <key>LSRequiresIPhoneOS</key>
    <true/>
    <key>UILaunchStoryboardName</key>
    <string>LaunchScreen</string>
    <key>UIRequiredDeviceCapabilities</key>
    <array>
        <string>armv7</string>
    </array>
    <key>UISupportedInterfaceOrientations</key>
    <array>
        <string>UIInterfaceOrientationPortrait</string>
        <string>UIInterfaceOrientationLandscapeLeft</string>
        <string>UIInterfaceOrientationLandscapeRight</string>
    </array>
    <key>UIViewControllerBasedStatusBarAppearance</key>
    <false/>
    <key>NSLocationWhenInUseUsageDescription</key>
    <string/>
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>localhost</key>
            <dict>
                <key>NSExceptionAllowsInsecureHTTPLoads</key>
                <true/>
            </dict>
        </dict>
    </dict>
    <key>UIAppFonts</key>
    <array>
        <string>Entypo.ttf</string>
        <string>EvilIcons.ttf</string>
        <string>Feather.ttf</string>
        <string>FontAwesome.ttf</string>
        <string>Foundation.ttf</string>
        <string>Ionicons.ttf</string>
        <string>MaterialCommunityIcons.ttf</string>
        <string>MaterialIcons.ttf</string>
        <string>Octicons.ttf</string>
        <string>SimpleLineIcons.ttf</string>
        <string>Zocial.ttf</string>
    </array>
</dict>
</plist>

This is how the error appears in my emulator

【问题讨论】:

key&gt;FacebookAppID&lt;/key&gt; 你必须插入有效的 App Id 。您必须从 Facebook 开发人员 &lt;string&gt;fb149XXXxxxx&lt;/string&gt; 创建 是的,在我的代码中,&lt;string&gt;&lt;/string&gt; 标签中有我的 Facebook 应用程序 ID,我刚刚从代码中删除了它,因为这是一个公共问题。 您也删除了实际值周围的 .. ,对吧? (这些仅用于表示“这是一个需要替换的占位符”......) 是的,在我的代码中它只是值,例如&lt;string&gt;12345678910&lt;/string&gt;。我完全按照“入门”文档中指定的方式粘贴了它 【参考方案1】:

事实证明,Facebook 拒绝的部分不是我的 App ID,而是从本机应用程序访问“webview”。开始在我的实际设备上运行应用程序并删除ShareDialog.setMode("webview"); - 就像一个魅力!我想这是因为 Facebook 最近限制了 API / SDK 访问。

【讨论】:

以上是关于FBSDK ShareDialog 显示“无效的应用程序 ID:提供的应用程序 ID 看起来不像有效的应用程序 ID。”的主要内容,如果未能解决你的问题,请参考以下文章

Android Facebook SDK 4.0 ShareDialog 不显示长文本

ShareDialog 无法打开 Facebook 应用程序

FacebookShare 0.3.2 Swift ShareDialog 控制台错误

ShareDialog 立即关闭

React-native fbsdk 获取名称和电子邮件

Facebook iOS SDK,使用 ShareDialog(不是 GraphAPI)分享带有标题的图像