用户登录后,我会使用以下代码检索用户信息:
[_facebook requestWithGraphPath:@"me" andDelegate:self];
它最初几次工作,但最终返回错误。我认为这是一个会话的事情因为我对我的权限有“offline_access”。我从Facebook退出并从干净的构建中再次编译,它仍然返回此错误:
错误域= facebookErrDomain代码= 10000 UserInfo = 0x54a2930“操作无法完成。(facebookErrDomain错误10000。)”
我假设我的访问令牌有效,因为我可以发帖。我是正确的吗?
我还注意到,每当我登录时,如果我允许我的应用访问我的用户信息,Facebook就不会重定向请求权限。
谁能告诉我什么是错的?
答案 0 :(得分:2)
关于授权命令的答案似乎有所不同。现在,没有像以前那样的失效日期。我尝试强制isSessionValid返回TRUE,它的工作原理。
isSessionValid检查accessToken和expirationDate。由于没有到期日期,函数返回FALSE。
不知道这是Facebook的临时修改,还是权威的修改。在这种情况下,我必须修复SDK。一个新的调用必须检索expirationDate。
答案 1 :(得分:1)
这是我用过的临时修复。您可以在FBLoginDialog.m
中找到此方法行46- (void) dialogDidSucceed:(NSURL*)url {
NSString *q = [url absoluteString];
NSString *token = [self getStringFromUrl:q needle:@"access_token="];
NSDate *expirationDate = [NSDate distantFuture];
if ((token == (NSString *) [NSNull null]) || (token.length ==0)) {
[self dialogDidCancel:url];
[self dismissWithSuccess:NO animated:YES];
} else {
if ([_loginDelegate respondsToSelector:@selector(fbDialogLogin:expirationDate:)]) {
[_loginDelegate fbDialogLogin:token expirationDate:expirationDate];
}
[self dismissWithSuccess:YES animated:YES];
}
}
有此问题的每个人都请求offline_access权限吗?这是我可以看到没有发送过期日期的唯一原因。也许不要请求offline_access权限。
答案 2 :(得分:1)
我遇到了同样的问题。我检查了我的隐私设置,权限,其他方法等...,但我无法解决它。 许多网站都说“检查访问offline_access / read_stream / publish_stream的权限”,我认为这些也很重要,但我无法修复它。
然后我终于找到了以下解决方案,它运行正常。
您应该在“Facebook.m”文件中将“safariAuth:YES”更改为“safariAuth:NO”。
- (void)authorize:(NSArray *)permissions
delegate:(id<FBSessionDelegate>)delegate {
[_permissions release];
_permissions = [permissions retain];
_sessionDelegate = delegate;
//[self authorizeWithFBAppAuth:YES safariAuth:YES];
//You can get auth_token in iOS App!
[self authorizeWithFBAppAuth:YES safariAuth:NO];
}
如果您已登录,则可以使用以下方法获取您自己的信息。
[facebook requestWithGraphPath:@"me" andDelegate:self];
如果您尚未登录,则应首先通过以下方法登录。
permissions = [[NSArray arrayWithObjects:
@"email", @"read_stream", @"user_birthday",
@"user_about_me", @"publish_stream", @"offline_access", nil] retain];
if (![facebook isSessionValid]) {
[facebook authorize:permissions delegate:self];
}
以下帖子救了我。非常感谢你! How to retrieve Facebook response using Facebook iOS SDK
祝你好运快乐编码! 谢谢。
答案 3 :(得分:0)
我遇到了这个问题,主要是因为我的Facebook帐户隐私最多。
最有可能是您在登录期间传入的权限。默认情况下,它只会提供对公共信息的访问权限。请记住,Facebook上公开的信息越来越少。
尝试将您的权限更改为“read_stream”,nil
然后代替[_facebook requestWithGraphPath:@“me”andDelegate:self];
尝试使用[_facebook requestWithGraphPath:@“me / home”andDelegate:self];
这应该会返回您的新闻Feed。 5分钟前为我工作过。
答案 4 :(得分:0)
这里添加的不多,在这里也不起作用。我使用iOS SDK发布到流,它一直工作到昨天。今天我的客户打电话给我并抱怨。啊。
我已经请求了离线访问权限,当然还有“publish_stream”权限......