我刚刚使用适用于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'
我能做错什么?
@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的值。希望这可以帮助。
在plist文件中包含“FacebookAppID”条目就足够了。
但是,在将“FacebookAppID”字符串从文档网站复制到Xcode中的plist文件后,我遇到了同样的问题。从plist文件中删除“FacebookAppID”条目并通过实际输入后重新输入它,它工作了!
因此,当将HTML文件中的字符串“FacebookAppID”复制/粘贴到plist文件时,也会复制一些不可见的标记或者字符编码搞砸了。
只是为了抬头。我今天遇到了这个问题,最后我只是注意到我只是将条目放在错误的.plist文件中。如果您过滤项目文件(在左侧),请键入.plist
,您可能会看到两个文件。一个是测试',另一个是你实际需要设置的。祝好运!
我仍然不确定为什么会发生这种情况,但我的解决方法是检查FBSession对象是否有APP_ID,如果没有,则手动设置:
if (![FBSession defaultAppID]) {
[FBSession setDefaultAppID:FB_APP_ID];
}
希望这有助于某人!
在我的情况下,我愚蠢地用小写'd'键入FacebookAppId。只是把它拿出来万一有人有同样的问题。
您可以在此处犯的另一个错误是使用快速搜索来搜索“plist”,而不会注意到您正在将App ID添加到错误的plist文件中。如果您已经包含了像Google Maps SDK这样的框架,那么它就有自己的plist文件。
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
}
除了之前的答案:即使您注意到您将FacebookAppID添加到错误的* .plist文件中并且仍然存在相同的错误,请再次检查。可能你把它换成了另一个错误的* .plist