我试图在两天内找到解决问题的方法。而且我想说一下我确定我读过的所有资源,你可以给我一个链接=) 问题是。我正在使用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数据。
正如我所说,我已经阅读了很多资源......实际上很多人都有同样的问题,但我没有找到任何有用的解决方案来解决这个问题。请帮助我。
答案 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];
}