6

我刚刚使用适用于 iOS 的新 Facebook 3.0 SDK 更新了我的应用程序。在此之前,我使用的是使用 FBSessionDelegate 和 FBRequestDelegate 的 SDK。在那个 SDK 中,我们必须将此代码放在 applicationDidFinishLaunching 中:

 facebook = [[Facebook alloc] initWithAppId:FB_APP_ID andDelegate:self];

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"] 
    && [defaults objectForKey:@"FBExpirationDateKey"]) {
    facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
    facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
} 

但是现在有了新的 3.0 SDK,我被告知我们所要做的就是导入框架和资源包,然后“将名为 FacebookAppID 的 ID 添加到包 *.plist” 所以我已经这样做了,但是当我调用其中包含 FBSession 的任何代码,我收到此错误:

 'FBSession: No AppID provided; either pass an AppID to init, or add a string valued key with the appropriate id named FacebookAppID to the bundle *.plist'

我可能做错了什么?

4

8 回答 8

13

在 plist 文件中有“FacebookAppID”条目就足够了。

但是,在将“FacebookAppID”字符串从文档网站复制到 Xcode 中的 plist 文件后,我遇到了同样的问题。从 plist 文件中删除“FacebookAppID”条目并通过实际输入重新输入后,它起作用了!

因此,当将字符串“FacebookAppID”从 HTML 文件复制/粘贴到 plist 文件时,一些不可见的标记也被复制或字符编码搞砸了。

于 2013-02-04T14:36:50.910 回答
6

只是为了抬头。我今天遇到了这个问题,最终我只是注意到我只是将条目放在了错误的 .plist 文件中。 如果你过滤你的项目文件(向下).plist,你可能会看到两个文件。一个是测试,另一个是您实际需要设置的。祝你好运!

于 2014-05-18T20:27:42.237 回答
5

我仍然不确定为什么会发生这种情况,但我的解决方法是检查 FBSession 对象是否具有 APP_ID,如果没有,则手动设置它:

if (![FBSession defaultAppID]) {
    [FBSession setDefaultAppID:FB_APP_ID];
}

希望这对某人有帮助!

于 2012-09-17T19:35:51.057 回答
5

就我而言,我愚蠢地输入了带有小写“d”的 FacebookAppId。只是把它放出来以防万一有人遇到同样的问题。

于 2013-11-14T16:05:54.230 回答
3

@Kwame 我遇到了同样的问题,您的会话对象缺少 App id。为此,您可以在名为 FacebookAppID 的 info.plist 中添加一个键,并使用 facebook 提供给您的 ios 应用程序的应用程序 ID 设置适当的值。或者,如果您已经这样做了,您可以通过在方法中设置适当的值以编程方式设置应用程序 ID - (id)initWithAppID:(NSString*)appID permissions:(NSArray*)permissions urlSchemeSuffix:(NSString*)urlSchemeSuffix tokenCacheStrategy:(FBSessionTokenCachingStrategy*)tokenCachingStrategy;。还请交叉检查 info.plist 中的应用程序 ID 的值。希望这可以帮助。

于 2012-09-20T15:15:02.730 回答
2

您在此处可能犯的另一个错误是使用快速搜索来搜索“plist”,而没有注意到您将 App ID 添加到错误的 plist 文件中。如果你已经包含了像谷歌地图 SDK 这样的框架,它有自己的 plist 文件。

于 2013-10-31T17:06:56.637 回答
0

AppDelegate.swift

import FBSDKCoreKit
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
    FBSDKSettings.setAppID("FacebookAppID")

    return true
}

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
if FBSDKApplicationDelegate.sharedInstance().application(app, open: url, options: options) {
    return true
}

return true
}
于 2018-09-10T07:18:34.447 回答
-1

只是除了以前的答案:即使您注意到您将 FacebookAppID 添加到错误的*.plist 文件中并且仍然有相同的错误,请再次检查。可能,您将其替换为另一个错误的 *.plist

于 2014-07-08T16:54:43.337 回答