有效的Facebook访问令牌iOS错误

时间:2013-05-18 21:57:35

标签: ios facebook

我正在尝试将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页面列出的所有其他设置进行了操作。

1 个答案:

答案 0 :(得分:0)

您的会话可能实际上没有打开。你不应该打电话给

[self postImage:image andMessage:message];

除非没有错误和

(state == FBSessionStateOpen)

要进一步调试,只需看一下“state”变量的值,看看它是什么。

另一件需要注意的事情是,如果这是用户第一次登录您的应用程序,则无法要求发布/写入权限。您必须首先请求读取权限,然后在上下文中请求发布权限。如果您最初要求发布权限,则应该收到错误消息。由于您没有收到错误,情况可能并非如此。