0

我有一个快速的问题:

此代码段有效:

 NSArray *permissions = @[@"email", @"user_birthday"];
    return [FBSession openActiveSessionWithReadPermissions:permissions
                                              allowLoginUI:allowLoginUI
                                         completionHandler:^(FBSession *session,
                                                             FBSessionState state,
                                                             NSError *error) {
                                             [self sessionStateChanged:session
                                                                 state:state
                                                                 error:error];
                                         }];

这不会:

NSArray *permissions = @[@"email", @"user_birthday", @"gender"];
return [FBSession openActiveSessionWithReadPermissions:permissions
                                          allowLoginUI:allowLoginUI
                                     completionHandler:^(FBSession *session,
                                                         FBSessionState state,
                                                         NSError *error) {
                                         [self sessionStateChanged:session
                                                             state:state
                                                             error:error];
                                     }];

我只是询问 Facebook 用户的性别,在第一种情况下,我在我的 NSLog 控制台上找到了用户会话,这很棒……但是当我扩展权限并在其中包含性别时,我得到了UIAlertView with: Error 操作无法完成。(com.facebook.sdk 错误 2。)

我做错了什么?如何请求获得用户性别的许可?

4

3 回答 3

1

性别不是 的公共属性,因此,您不能使用 user.gender 进行访问,就像使用 user.name 一样,这里您有一个字典,并且您可以通过密钥访问。

喜欢:

_genderLabel.text = [user objectForKey:@"gender"];

干杯

于 2014-03-05T03:38:00.747 回答
1

正如您在此处看到的,性别是基本信息的一部分。每当您打开具有权限的会话时,它都会询问基本信息。既然您已经拥有它,facebook 必须将其视为错误。

顺便问一下用户名时我遇到了同样的问题。

于 2012-11-07T16:25:38.200 回答
0

查看权限列表-gender不是其中之一 - 性别是User 对象的一个​​字段,并且也暴露在FQL 表sex的列中,一旦用户授予您访问其访问权限的基本权限,您就可以访问该列数据。user

仅返回当前用户性别的示例查询(SDK 不可知)是简单 /me?fields=gender的,其返回值将是

{
  "gender": "male", 
  "id": "533875325"
}

请注意,它在访问用户时也会在默认响应中返回,因此您无需显式指定它。

此外,一些用户可能没有定义性别(尽管我认为这相对罕见)

于 2012-11-07T17:52:35.487 回答