0

用户登录后,我使用以下代码检索用户信息:

[_facebook requestWithGraphPath:@"me" andDelegate:self];

它在前几次工作,但最终返回错误。我认为这是一个会话,因为我的权限有“offline_access”。我从 Facebook 注销并从干净的构建中再次编译,它仍然返回此错误:

错误域=facebookErrDomain 代码=10000 UserInfo=0x54a2930“操作无法完成。(facebookErrDomain 错误 10000。)”

我假设我的访问令牌是有效的,因为我可以发布。我可以这样假设吗?

我还注意到,每当我登录时,如果我允许我的应用访问我的用户信息,Facebook 不会重定向我以请求许可。

谁能告诉我怎么了?

4

5 回答 5

2

对授权命令的回答似乎不同。现在,没有像以前那样的有效期。我尝试强制 isSessionValid 返回 TRUE,它可以工作。

isSessionValid 检查 accessToken 和 expirationDate。由于没有到期日期,该函数返回 FALSE。

不知道这是facebook的临时修改,还是最终修改。在这种情况下,SDK 必须是固定的,我想。并且一个新的调用必须检索expirationDate。

于 2010-09-09T14:58:07.830 回答
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 权限。

于 2010-09-09T15:54:36.157 回答
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];
}

以下帖子救了我。非常感谢! 如何使用 Facebook iOS SDK 检索 Facebook 响应

祝你好运,编码快乐!谢谢你。

于 2011-05-06T18:45:44.470 回答
0

这里没有太多要补充的,在这里也不起作用。我使用 iOS SDK 发布到流中,它一直工作到昨天。今天我的客户打电话给我抱怨。啊。

我已经请求了离线访问权限,当然还有“publish_stream”权限......

于 2010-09-09T13:45:53.963 回答
0

我遇到了这个问题,主要是因为我的 Facebook 帐户的隐私已被最大化。

这很可能是您在登录期间传递的权限。默认情况下,它只允许访问公共信息。请记住,Facebook 上公开的信息越来越少。

尝试将您的权限更改为“read_stream”,nil

然后代替 [_facebook requestWithGraphPath:@"me" andDelegate:self];

尝试使用 [_facebook requestWithGraphPath:@"me/home" andDelegate:self];

这应该会返回您的新闻提要。5 分钟前为我工作。

于 2010-09-09T11:39:48.360 回答