'FBSession:没有提供AppID

问题描述 投票:6回答:8

我刚刚使用适用于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'

我能做错什么?

facebook-ios-sdk
8个回答
3
投票

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


13
投票

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

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

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


6
投票

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


5
投票

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

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

希望这有助于某人!


5
投票

在我的情况下,我愚蠢地用小写'd'键入FacebookAppId。只是把它拿出来万一有人有同样的问题。


2
投票

您可以在此处犯的另一个错误是使用快速搜索来搜索“plist”,而不会注意到您正在将App ID添加到错误的plist文件中。如果您已经包含了像Google Maps SDK这样的框架,那么它就有自己的plist文件。


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
}

-1
投票

除了之前的答案:即使您注意到您将FacebookAppID添加到错误的* .plist文件中并且仍然存在相同的错误,请再次检查。可能你把它换成了另一个错误的* .plist

© www.soinside.com 2019 - 2024. All rights reserved.