Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ios5-当facebook应用程序已在设备上时向facebook发布_Ios_Facebook_Authentication - Fatal编程技术网

ios5-当facebook应用程序已在设备上时向facebook发布

ios5-当facebook应用程序已在设备上时向facebook发布,ios,facebook,authentication,Ios,Facebook,Authentication,我正在关注中提供的信息。如果设备上没有facebook应用程序,则其工作良好。 考虑脸谱网应用程序不在设备上:我授权脸谱网及其开放Safari。我授权应用程序,返回到ios应用程序,它在FBSessionDelegate中调用委托“fbDidLogin”。我正在保存上面URL中提到的访问令牌和过期日期。然后,我可以把它贴到facebook上。这很好。 现在,facebook应用程序也可以在设备上使用并登录:当我调用“授权”时,它会打开facebook应用程序并授权该应用程序,然后返回到ios应用

我正在关注中提供的信息。如果设备上没有facebook应用程序,则其工作良好。
考虑脸谱网应用程序不在设备上:我授权脸谱网及其开放Safari。我授权应用程序,返回到ios应用程序,它在FBSessionDelegate中调用委托“fbDidLogin”。我正在保存上面URL中提到的访问令牌和过期日期。然后,我可以把它贴到facebook上。这很好。
现在,facebook应用程序也可以在设备上使用并登录:当我调用“授权”时,它会打开facebook应用程序并授权该应用程序,然后返回到ios应用程序。但它并没有调用“fbdilogin”委托方法。我应该如何识别或捕获访问令牌和过期日期?
我正在编写以下代码:
facebook=[[facebook alloc]initWithAppId:FB_APPID和delegate: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];
}

有人能告诉我我犯了什么错误吗?

实际上,当你点击“授权”时,它会打开safari,如果设备上有facebook应用程序,它会打开facebook应用程序,否则它会在safari中打开facebook。如果你不想打开safari和facebook应用程序,那么在facebook.m中,在它调用的任何地方将此声明更改为“否”

[self authorizeWithFBAppAuth:NO safariAuth:NO];

找到了解决办法。问题是facebook应用程序中提到的bundle ID和我的应用程序的bundle ID不一样,因此无法正常工作。

但我仍然希望在不更改facebook代码的情况下使用默认功能。但是根据facebook的文档,他们没有提到如何处理这种情况。很糟糕。