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