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

ご覧のとおり、性別は基本情報の一部ですまた、権限のあるセッションを開くと、基本的な情報が要求されます。あなたはすでにそれを持っているので、Facebookはそれをエラーと見なさなければなりません。

ちなみに、ユーザー名を尋ねたときに同じ問題が発生しました。

于 2012-11-07T16:25:38.200 に答える
1

Genderはのパブリックプロパティではないため、user.nameの場合とは異なり、user.genderを使用してアクセスすることはできません。ここに辞書があり、キーを渡してアクセスします。

お気に入り:

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

乾杯

于 2014-03-05T03:38:00.747 に答える
0

権限のリストを見てください-genderそれらの1つではありません-性別はユーザーオブジェクトのフィールドであり、ユーザーがアクセスするための基本的な権限を付与するとアクセスできるFQLテーブルsexの列にも表示されますデータ。user

現在のユーザーの性別のみを返すサンプルクエリ(SDKにとらわれない)は単純 /me?fields=genderで、その戻り値は次のようになります。

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

ユーザーにアクセスするとデフォルトの応答でも返されるため、明示的に指定する必要はありません。

また、一部のユーザーは性別が定義されていない場合があります(これは比較的まれだと思いますが)

于 2012-11-07T17:52:35.487 に答える