iOS Facebook SDK - 远程定义FacebookAppID

问题描述:

使用iOS Facebook SDK 3.0时,需要在应用程序的info.plist上定义FacebookAppID和相关的URL Scheme。我想远程定义这些(请求我自己的服务器的应用程序ID)。所以2个不同的问题:iOS Facebook SDK - 远程定义FacebookAppID

  1. 我可以在运行时更改应用程序的info.plist吗?或者我可以在另一个plist中定义FacebookApID和URL Scheme ,我可以改变plist甚至创建一个新的自定义plist文件?
  2. 是否有另一种方法来定义URL方案和应用程序ID,除了使用info.plist为 Facebook SDK 3.0?

1.1不,您不能在运行时更改Info.plist文件。

1.2不,您不能加载另一个plist文件来覆盖Info.plist中的设置。

2.1是的,您可以在不更改Info.plist文件的情况下通过调用[FBSettings setDefaultAppID:@"Your Facebook App ID"];来定义FacebookApID在Facebook iOS SDK中查看FBSettings.h的源代码。

2.2否,URL方案必须在Info.plist中定义,以便iOS可以识别它。我相信在安装你的应用程序时,iOS的URL方案是由iOS读取的,并且它被缓存在系统中的其他地方。即使你可以改变你的Info.plist,系统也不会选择你的新URL Scheme。但别担心,没有使用URL方案的Facebook身份验证有一个解决方法!我们可以强制Facebook iOS SDK使用UIWebView进行登录,请参阅this * question

+0

很好的答案! 10倍! – gran33 2014-01-26 15:58:29

+1

解决方案2.1的问题是'***终止应用程序由于未捕获的异常'InvalidOperationException',原因:'fb123123123123未注册为URL方案。请将它添加到你的Info.plist中。但#import 和[FBSDKSettings setAppID:@“123123123123”];工作正常 – WINSergey 2016-10-05 20:50:52

+0

@WINSergey看来你使用的是Facebook SDK 4+,这个答案是3年前写的Facebook SDK 3. – howanghk 2016-10-06 08:50:20

这是不可能的,出于多种原因:

  1. 你不允许修改你在运行iOS应用程序的Info.plist文件。
  2. 你应该有一个Facebook应用程序运行,你不能得到的ID,然后再尝试运送你的应用程序。你现在如何测试应用程序?
  3. Facebook应用程序ID绑定到应用程序用来完成Facebook的OAuth流程的URL方案。 iOS应用程序的URL方案在info.plist中定义,同样,您无法更改。
  4. 能够任意设置Facebook应用程序ID是一个安全问题,因为它可能会让别人的Facebook应用程序变得微不足道。

这些只是我能想到的一小部分,我敢肯定还有更多。