5

Facebook の友達の誕生日データを取得しようとしていますが、null が返されます。私はこのコードを使用しています:

FBRequest* friendsRequest = [FBRequest requestForMyFriends];
[friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection,
                                  NSDictionary* result,
                                  NSError *error) {
    NSArray* friends = [result objectForKey:@"data"];
    NSLog(@"Found: %i friends", friends.count);
    for (NSDictionary<FBGraphUser>* friend in friends) {
        NSLog(@"I have a friend named %@ - birthday %@", friend.name, friend.birthday);
    }
}];

友達の名前は問題ありませんが、友達の誕生日または基本的な友達のデータ以外のすべてのデータが null を返しています。facebook.com アプリ ページと openSession メソッド (ログイン) に user_birthday と friends_birthday のアクセス許可が既に追加されていることに注意してください。

- (void)openSession
{

    NSArray *permissions = [[NSArray alloc] initWithObjects:
                            @"user_birthday",
                            @"friends_birthday",
                            nil];


    [FBSession openActiveSessionWithReadPermissions:permissions
                                       allowLoginUI:YES
                                  completionHandler:
     ^(FBSession *session,
       FBSessionState state, NSError *error) {
         [self sessionStateChanged:session state:state error:error];
     }];
 }

ここで助けが必要です。私はすでにすべてを試しました。

4

2 に答える 2

35

私は同じ問題を抱えており、この方法で解決します。

  • まず、適切な権限があることを確認してください。

     NSArray *permissions = @[@"user_birthday", @"friends_hometown",
                            @"friends_birthday", @"friends_location"];
    [FBSession openActiveSessionWithReadPermissions:permissions allowLoginUI:YES completionHandler: .....
    
  • 次に、requestForMyFriends を使用しないでください。私はいくつかの方法で試します( FBRequest とこの種のものを変更する

  • アクセス許可を確認し、それが必要なアクセス許可であることを確認してください。

    NSLog(@"permissions::%@",FBSession.activeSession.permissions);
    
  • この方法で FBRequest を生成します。

    FBRequest *friendRequest = [FBRequest requestForGraphPath:@"me/friends?fields=name,picture,birthday,location"];
     [ friendRequest startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
        NSArray *data = [result objectForKey:@"data"];
        for (FBGraphObject<FBGraphUser> *friend in data) {
            NSLog(@"%@:%@", [friend name],[friend birthday]);
     }}];
    

やっとこのデータが取れました。お役に立てば幸いです

于 2012-11-06T10:02:38.650 に答える
2

Graph API の v2.0 では、人の友達の誕生日を取得することはできませfriends_birthdayん。パーミッションは廃止されました。

これらの変更について詳しくは、https ://developers.facebook.com/docs/apps/changelog をご覧ください。

于 2014-08-04T17:32:38.663 に答える