IOS FacebookSDK apprequests对话框错误

时间:2013-02-12 12:59:37

标签: ios facebook apprequests

我试图在两天内找到解决问题的方法。而且我想说一下我确定我读过的所有资源,你可以给我一个链接=) 问题是。我正在使用FacebookSDK 3.1 for iOS。并尝试进行apprequests对话......代码很简单

session =[[FBSession alloc]initWithAppID:@"XXXXXXXXXXXX" permissions:nil urlSchemeSuffix:@"xxxxxxxxxxxx" tokenCacheStrategy:nil];
    [FBSession setActiveSession:session];
      [self ShowSessionState:session.state];
      NSLog(@"Acces token data: %@",[session accessToken]);  

      [session openWithCompletionHandler:^(FBSession *psession, FBSessionState status, NSError *error) {
         // NSLog(@"I'm in");

         Facebook * facebook = [[Facebook alloc] initWithAppId:@"XXXXXXXXXXXX" urlSchemeSuffix:@"xxxxxxxxx" andDelegate:nil];

                 [facebook setAccessToken:FBSession.activeSession.accessToken];
                 [facebook setExpirationDate:FBSession.activeSession.expirationDate];

                 [facebook dialog:@"apprequests" andDelegate:nil];

           }];

所有我看到的......只是框架有错误 - Api错误代码:110; Api错误说明:用户ID无效;错误消息:缺少用户cookie(以验证会话用户)。 但授权是成功的...我有一个有效的accessToken ..可以得到我的朋友或我自己的FB数据。

正如我所说,我已经阅读了很多资源......实际上很多人都有同样的问题,但我没有找到任何有用的解决方案来解决这个问题。请帮助我。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,也许它会帮助别人。实际上它看起来像驱魔,但工作)所以问题是:如果你从safary或Facebook应用程序登录Facebook,webview不保存任何cookie ...所以你需要让你从webview登录。您可以使用FBConnect包(在谷歌中阅读更多内容)。在Facebook.m文件中,您需要更改以下代码:

[self authorizeWithFBAppAuth:YES safariAuth:YES];

[self authorizeWithFBAppAuth:NO safariAuth:NO]; 

在这种情况下,您将使用

[facebook authorize:permissions];  

登录始终在webview中,您可以使用任何对话框,如apprequests等。 还有一个问题))登录对话框没有出现?这是另一个Facebook错误))要解决这个问题,你只需要在调用它时做出延迟:

[self performSelector:@selector(showFBLoginDialog) withObject:nil afterDelay:1];

- (void)showFBLoginDialog {
    NSArray *permissions = [[NSArray alloc] initWithObjects:
                            @"offline_access",
                            @"publish_actions",
                            @"read_stream",
                            @"user_photos",
                            @"email",
                            @"publish_stream",
                            @"user_likes",
                            @"user_about_me", nil];
    [facebook authorize:permissions];    
}