Facebook SDK:应用未注册为URL方案


82

我正在使用此处Facebook SDK找到的内容,并且正在尝试提供的示例(在文件夹中)。FacebookiOSSample

如果仅用AppId我的具体内容替换此处AppId,那么我将无法再共享。(我在AppDelegate文件和info.plist文件中都将其替换了)。我现在收到以下错误:

FBSDKLog:无效使用FBAppCall,fb ****未注册为URL方案。您是否在plist中设置了“ FacebookUrlSchemeSuffix”?

否则,这与样本的原始AppId文件(指向的名称)可以正常工作IFaceTouch

我的应用程序设置有什么问题,我该如何注册AppId


1
注意:以下建议您将fbauth2添加到CFBundleURLSchemes的答案将导致您的应用拦截其他应用的Facebook应用开关登录流量。请勿这样做
Chris Maddern

如果您尝试解决“ canOpenURL:失败”的警告,则这些警告仅表示未在您的设备或模拟器上安装Facebook应用,可以将其忽略。”
Binoy jose

Answers:


225

请遵循以下三个步骤:

  1. 创建一个带有字符串值的名为FacebookAppID的键,然后在其中添加应用程序ID。
  2. 创建一个带有字符串值的名为FacebookDisplayName的键,然后添加您在App Dashboard中配置的Display Name。
  3. 使用一个名为URL Schemes的数组子项创建一个称为URL types的数组键。给它一个项目,您的应用程序ID带有fb前缀。这用于确保应用程序将接收基于Web的OAuth流的回调URL

完成的.plist应该看起来像这样:

在此处输入图片说明

来源连结:


1
好的,问题似乎出在FacebookDisplayName上,这与我的App Dashboard不匹配。谢谢!
L. Desjardins,2014年

3
大多数情况下,可能会造成类似错误消息的错字,甚至是字母大小写错漏的字母。请仔细检查!
BootMaker

4
@BootMaker其次,-我的矿井没有工作,因为我错误地使用了“ URL方案”而不是“ URL方案”。
本杰明·马丁

1
您可以在此处看到Xcode 6的更新2015版本的详细说明stackoverflow.com/a/18480723/1780492
BootMaker

同样要注意,将FacebookAppID和FacebookDisplayName设置为高于URL类型。它崩溃,如果不是这样的SDK 4
保罗·勒兹万·伯格

20

就原始键和值而言,您应该具有CFBundleURLTypes和CFBundleURLSchemes

就原始键和值而言,您应该具有CFBundleURLTypes和CFBundleURLSchemes。希望有帮助!


1
CFBundle存在,但是xml格式帮助我发现结构错误。谢谢
丹尼尔·基林斯卡斯


9

对于iOS 9

如果有错误:'LSApplicationQueriesSchemes'

根据Bear with me的答案,您还必须添加以下行:

<key>LSApplicationQueriesSchemes</key>
<array>
   <string>fbauth2</string>
</array>

看到这个

应该在.plist文件末尾添加以下行:

<key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>fb2R3234544534554</string>
            </array>
        </dict>
    </array>
    <key>FacebookAppID</key>
    <string>2R3234544534554</string>
    <key>FacebookDisplayName</key>
    <string>stevejeff</string>
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>facebook.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
            <key>fbcdn.net</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
            <key>akamaihd.net</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
        </dict>
    </dict>
    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>fbauth2</string>
    </array>
    </dict>
    </plist>

*如果您使用的是v4.6.0或更高版本的SDK,则只需添加:*(感谢 mohsinj

   <key>LSApplicationQueriesSchemes</key>
      <array>
        <string>fbapi</string>
        <string>fb-messenger-api</string>
        <string>fbauth2</string>
        <string>fbshareextension</string>
   </array>

1
[更新] 2016年8月-对于“ LSApplicationQueriesSchemes”,您必须添加更多项目 <key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fb-messenger-api</string> <string>fbauth2</string> <string>fbshareextension</string> </array>
mohsinj 2016年

4

1-在Xcode中,右键单击项目的Info.plist文件,然后选择Open As-> Source Code。

2-将以下XML代码段插入到文件的主体中,就在最后一个</dict>元素之前。

  <key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>fb{your-app-id}</string>
    </array>
  </dict>
</array>
<key>FacebookAppID</key>
<string>{your-app-id}</string>
<key>FacebookDisplayName</key>
<string>{your-app-name}</string>
<key>LSApplicationQueriesSchemes</key>
<array>
  <string>fbapi</string>
  <string>fb-messenger-share-api</string>
  <string>fbauth2</string>
  <string>fbshareextension</string>
</array>

3-将{your-app-id}和{your-app-name}替换为在Facebook App仪表板上找到的应用程序的ID和名称。




0

我不知道你的问题和我的一样。但是我花了一些时间找到它,我将它放在这里,这样它可以帮助任何人。.问题是,谷歌登录使用相同的info.plist属性名称,并且它覆盖了Facebook的名称。可以在X-Code中看到并将它们放在一起,现在一切正常!(URL类型属性)。


0

就我而言,当我再次在info.plist中分别添加它们时,我已经在我的info.plist中拥有LSApplicationQueriesSchemes和CFBundleURLTypes键。它没有阅读第二个,也无法识别。因此,将值添加到以前的LSApplicationQueriesSchemes和CFBundleURLTypes键中解决了我的问题。


-3

我也面临着同样的问题。然后这样做:

<dict> <key>CFBundleURLSchemes</key> <array> <string>fb154510174913175</string> <string>fbauth2</string> // add this line to remove the error </array> </dict>

现在问题已解决。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.