iOS Facebook SDK – 远程定义FacebookAppID

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

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

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

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

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

2.2否,URLscheme必须在Info.plist中定义,以便iOS可以识别它。 我相信,在安装你的应用程序时,URLscheme是由iOS读取的,并且它被caching在系统中的其他地方。 即使你可以改变你的Info.plist,系统也不会select你的新的URL Scheme。 但是不要担心,没有使用URLscheme的Facebook身份validation有一个解决方法! 我们可以强制Facebook的iOS SDK使用UIWebViewlogin,看到这个stackoverflow的问题 。

这是不可能的,原因有很多:

  1. 您不能在运行时修改iOS应用的info.plist文件。
  2. 你应该有一个Facebook应用程序运行,你不能得到你的ID 很久之前,你试图运送你的应用程序。 你现在如何testing应用程序?
  3. Facebook应用程序ID绑定到应用程序用来完成Facebook的OAuthstream程的URLscheme。 iOS应用程序的URLscheme在info.plist中定义,同样,您不能更改。
  4. 能够随意设置Facebook应用程序ID是一个安全问题,因为它会使别人的Facebook应用程序构成微不足道。

这些只是我能想到的一小部分,我相信还有更多。