我正在尝试将Facebook与我的iOS应用程序集成,但我遇到了这个问题。
当我第一次运行此代码时,它工作得很好,但似乎facebook缓存中的某些内容导致此错误:“必须使用活动访问令牌来查询有关当前用户的信息。”
我使用这两个功能尝试上传照片:
+(BOOL)logInAndPostImage:(UIImage*)image andMessage:(NSString*)message {
NSArray *permissions = [NSArray arrayWithObjects:@"publish_stream", nil];
[FBSession.activeSession closeAndClearTokenInformation];
return [FBSession openActiveSessionWithPublishPermissions:permissions
defaultAudience:FBSessionDefaultAudienceOnlyMe
allowLoginUI:YES
completionHandler:
^(FBSession *session, FBSessionState state, NSError *error) {
[self sessionStateChanged:session
state:state
error:error];
if(error) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Problem connecting with Facebook" delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles:nil];
[alert show];
} else {
[self postImage:image andMessage:message];
}
}];
}
+(void)postImage:(UIImage*)image andMessage:(NSString*)message
{
NSLog(@" Access Token Description: %@",[[FBSession activeSession] accessToken].description);
[FBRequestConnection startForUploadPhoto:image completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
if (!error) {
[[[UIAlertView alloc] initWithTitle:@"Result"
message:@"Your update has been posted to Facebook!"
delegate:self
cancelButtonTitle:@"Sweet!"
otherButtonTitles:nil] show];
} else {
[[[UIAlertView alloc] initWithTitle:@"Error"
message:@"Yikes! Facebook had an error. Please try again!"
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil] show];
NSLog(@"%@", error);
}
}];
}
当我查询活动令牌描述的描述时,它实际上是null。所以我想虽然FBSession openActiveSessionWithPublishPermissions:defaultAudience:allowLoginUI:completionHandler:
没有返回错误,但我没有生成令牌?
有关如何进一步调试此错误的任何建议?我已经按照Facebook Developer页面列出的所有其他设置进行了操作。
答案 0 :(得分:0)
您的会话可能实际上没有打开。你不应该打电话给
[self postImage:image andMessage:message];
除非没有错误和
(state == FBSessionStateOpen)
要进一步调试,只需看一下“state”变量的值,看看它是什么。
另一件需要注意的事情是,如果这是用户第一次登录您的应用程序,则无法要求发布/写入权限。您必须首先请求读取权限,然后在上下文中请求发布权限。如果您最初要求发布权限,则应该收到错误消息。由于您没有收到错误,情况可能并非如此。