FBSDK ShareDialog показывает «Неверный идентификатор приложения: предоставленный идентификатор приложения не похож на действительный идентификатор приложения». - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь использовать FBSDK ShareDialog в моем приложении-реактиве (пока только IOS), и когда я открываю ShareDialog, я постоянно вижу сообщение «Неверный идентификатор приложения».Я добавил указанный код в свой файл 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>

Вот так появляется ошибка в моем эмуляторе

1 Ответ

0 голосов
/ 11 мая 2018

Оказывается, часть, от которой Facebook отказывался, была не моим идентификатором приложения, а доступом к «веб-обзору» из нативного приложения. Запустил приложение с моего фактического устройства и удалил ShareDialog.setMode("webview"); - работает как шарм! Я полагаю, это из-за того, что Facebook недавно ограничил доступ к API / SDK.

...