通过iPad将评分发布到Facebook Leader时,Facebook Access令牌为空

时间:2014-01-17 10:58:25

标签: ios facebook ipad

当我使用iPhone时,我正在使用Facebook Leader发布在iOS 7中工作得很好的分数,但是当我使用iPad与iOS 7时它会提供null访问令牌。当我使用旧版iPad时,它也正常工作。只有当我在iOS上使用iPad时才会遇到这个问题。

代码段:

[FBSession openActiveSessionWithPublishPermissions:permissions defaultAudience:FBSessionDefaultAudienceFriends allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {

           NSLog(@" access==%@",[FBSession activeSession].accessTokenData.accessToken);

            NSMutableDictionary* params =   [NSMutableDictionary dictionaryWithObjectsAndKeys:

                                          [FBSession activeSession].accessTokenData.accessToken,@"access_token",[NSString stringWithFormat:@"%d",time], @"score",nil];

            [FBRequestConnection startWithGraphPath:@"me/scores"

                                         parameters:params

                                         HTTPMethod:@"POST"

                                  completionHandler:

             ^(FBRequestConnection *connection, id result, NSError *error) {

                 // Handle results

                 NSLog(@"result==%@ eror==%@",result,error);

             }];
        }];

错误消息:

Error Domain=com.facebook.sdk Code=5 "The operation couldn’t be completed. (com.facebook.sdk error 5.)" UserInfo=0x16573530 {com.facebook.sdk:ParsedJSONResponseKey={

    body =     {

        error =         {

            code = 2500;

            message = "An active access token must be used to query information about the current user.";

            type = OAuthException;

        };

    };

    code = 400;

}, com.facebook.sdk:HTTPStatusCode=400}

我被困在这里。请指出一些方法。我的实施有什么问题。

1 个答案:

答案 0 :(得分:0)

您应该使用session而不是[FBSession activeSession],因为目前在此Block方法中,您是从前一个会话中查询访问令牌,即从[FBSession activeSession]而不是从session返回的[FBSession openActiveSessionWithPublishPermissions:^block {1}}。或者至少在获得accessstoken之前指定[FBSession setActiveSession:session];