ios5 - 当Facebook应用已经在设备上时发布到Facebook

时间:2012-01-23 07:48:27

标签: ios facebook authentication

我正在关注facebook url中提供的信息。如果Facebook应用程序不在设备上,它的运行良好和良好。
考虑Facebook应用程序不在设备上:我正在授权Facebook及其开放的野生动物园。我授权应用程序,回到ios应用程序,它在FBSessionDelegate中调用委托“fbDidLogin”。我正在保存上述URL中提到的访问令牌和到期日期。然后,我可以发布它facebook。这很好。
现在,Facebook应用程序在设备上可用并登录:当我打电话给“授权”时,它打开Facebook应用程序并授权应用程序,然后回到ios应用程序。但它没有调用“fbDidLogin”委托方法。我该如何识别或捕获访问令牌和到期日期?
我正在编写以下代码:
 facebook = [[Facebook alloc] initWithAppId:FB_APPID andDelegate:self];

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

NSArray* permissions =  [NSArray arrayWithObjects:@"publish_stream",nil];
if (![facebook isSessionValid]) 
{
    [facebook authorize:permissions];
}



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

有人可以指出我正在做的错误吗?

2 个答案:

答案 0 :(得分:0)

实际上当你点击授权然后它将打开safari并且如果在设备上有facebook应用程序然后它将打开facebook app否则它将在safari中打开facebook。如果您不想打开Safari和facebook应用程序,那么在facebook.m中将此语句更改为调用NO的所有位置。

[self authorizeWithFBAppAuth:NO safariAuth:NO];

答案 1 :(得分:0)

找到解决方案。问题是Facebook应用程序中提到的捆绑ID和我的应用程序的捆绑包ID不同,所以它不起作用。 Look the URL to know more