1

I'm trying to find solution for my problem during two days. And I want to say what I'm sure what I've read all resource where you could give me a links =) The problem is. I'm using FacebookSDK 3.1 for iOS. And trying to make apprequests dialog... The code is simple

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];

           }];

And all what I see.. just Frame with error - Api Error Code:110; Api Error Description: invalid user Id; Error message: Missing user cookie (to validate session user). But the authorization is successful... I have a valid accessToken.. can get my friends or my own FB data.

As I said I've read a lot of resources.... And really the many people have same problem, but I don't found any useful solution for this problem. So help me, please.

4

1 回答 1

0

我找到了一个解决方案,也许它会帮助别人。实际上它看起来像驱魔但有效)所以问题是:如果你从 safary 或 Facebook 应用程序登录 facebook,webview 不会保存任何 cookie ......所以你需要让你从 webview 登录。您可以使用 FBConnect 包来实现(在 google 中阅读更多内容)。在 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];    
}
于 2013-02-13T10:19:00.933 回答