2013-03-22 17 views
4

使用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?

回答

13

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 stackoverflow 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

2

這是不可能的,出於多種原因:

  1. 你不允許修改你在運行iOS應用程序的Info.plist文件。
  2. 你應該有一個Facebook應用程序運行,你不能得到的ID,然後再嘗試運送你的應用程序。你現在如何測試應用程序?
  3. Facebook應用程序ID綁定到應用程序用來完成Facebook的OAuth流程的URL方案。 iOS應用程序的URL方案在info.plist中定義,同樣,您無法更改。
  4. 能夠任意設置Facebook應用程序ID是一個安全問題,因爲它可能會讓別人的Facebook應用程序變得微不足道。

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