iOS Facebook SDK 连接在 iDevice 上失败

Posted

技术标签:

【中文标题】iOS Facebook SDK 连接在 iDevice 上失败【英文标题】:iOS Facebook SDK connect fails on iDevice 【发布时间】:2012-05-22 08:22:37 【问题描述】:

我在 ios 应用(ARC,在 iOS 5 上运行)中使用 facebook connect。它在模拟器和设备上都可以正常工作,但是从今天早上它已经停止在设备上工作,它仍然可以在模拟器上工作。在设备上,我调用了 fbDinNotLogin 方法。

现在,我知道区别在于模拟器使用移动 facebook,而我的应用程序使用原生 iOS facebook 应用程序,而且我还知道您可以调整 facebook.m 文件以强制应用程序在其他地方登录,但我没有想这样做。

从昨天(一切正常)加载我以前的构建也给了我相同的结果。所以昨天运行的相同代码今天不会运行。知道为什么会这样吗?下面是我的委托 .m 文件:

[EIDT] 我从本机 facebook 应用程序中获得了各种不同的行为。有时它会打开 facebook 应用程序,并留在那里不回到我的应用程序。有时它只是快速返回到我的应用程序,而不允许 Facebook 应用程序征求我的许可。我很困惑。 [/EDIT]

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:       (NSDictionary *)launchOptions 

user *userClass= [[user alloc] init];
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"]) 

    // app already launched for the first time



else

    // This is the first launch ever
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    [userClass CopyDbToDocumentsFolder];









facebook = [[Facebook alloc] initWithAppId:@"XXXXXXXXXX" andDelegate:self];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"] 
&& [defaults objectForKey:@"FBExpirationDateKey"]) 
facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];

if (![facebook isSessionValid]) 
[facebook authorize:nil];







return YES;


-(void)fbDidLogout

NSLog(@"Facebook loggedOut");


- (void)fbDidNotLogin:(BOOL)cancelled



NSLog(@"Facebook Connect Failed");





- (void)fbDidLogin 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
[defaults synchronize];



- (void)fbSessionInvalidated

NSLog(@"Facebook Session Invalidated");




- (void)fbDidExtendToken:(NSString*)accessToken
           expiresAt:(NSDate*)expiresAt

NSLog(@"Facebook Toekn was extended");




- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 
    return [self.facebook handleOpenURL:url];


- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:            (NSString *)sourceApplication annotation:(id)annotation 
    return [self.facebook handleOpenURL:url];



- (void)applicationDidBecomeActive:(UIApplication *)application 
// Although the SDK attempts to refresh its access tokens when it makes API calls,
// it's a good practice to refresh the access token also when the app becomes active.
// This gives apps that seldom make api calls a higher chance of having a non expired
// access token.
[[self facebook] extendAccessTokenIfNeeded];


@end

【问题讨论】:

【参考方案1】:

原来问题确实出在 Facebook 而不是我的应用!我的开发者帐户一直未能保存更改等,但它现在可以正常工作了。

【讨论】:

以上是关于iOS Facebook SDK 连接在 iDevice 上失败的主要内容,如果未能解决你的问题,请参考以下文章

帮助 facebook ios sdk

无法通过 Facebook iOS SDK 连接到 Facebook

适用于 iOS 的 Facebook SDK

Facebook iOS SDK 3.1.1 安装问题

ios facebook sdk 请求的超时值

iOS 应用程序中的 Facebook 连接