2

誰かが私を助けることができますか?iOS用の最新のFacebookSDK(v 3.1)を使用して単一のFQLクエリを作成し、ユーザーの友人の誕生日と電子メールを取得する方法がわかりません。名前などのフィールドをクエリすると、正しい値が取得されますが、電子メールと誕生日のフィールドはnullになります。

これが私のコードです

- (void)facebookViewControllerDoneWasPressed:(id)sender {

    // we pick up the users from the selection, and create a string that we use to update the text view
    // at the bottom of the display; note that self.selection is a property inherited from our base class
    for (id<FBGraphUser> user in _friendPickerController.selection) {
        _nameTxt.text = user.name;
        NSString *fql = [NSString stringWithFormat:@"SELECT email, birthday, name FROM user WHERE uid = %@ ",user.id];
        NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObject:fql forKey:@"q"];
        [FBRequestConnection startWithGraphPath:@"/fql"
                                     parameters:params
                                     HTTPMethod:@"GET"
                              completionHandler:^(FBRequestConnection *connection,
                                              id result,
                                                      NSError *error) {
                                  if (error) {
                                      NSLog(@"Error: %@", [error localizedDescription]);
                                  } else {
                                      NSLog(@"Result: %@", result);
                                  }
                              }];

    }
    [self.navigationController dismissModalViewControllerAnimated:YES];
}

名前の値を取得していますが、メールアドレスと誕生日の値はnullです。

ありがとう

4

1 に答える 1

3

クエリを呼び出す前に、ユーザーにログインして、電子メールとuser_birthdayのアクセス許可を要求する必要があります。例えば:

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

上記の方法は、このチュートリアルのコンテキストで使用されます。

https://developers.facebook.com/docs/howtos/login-with-facebook-using-ios-sdk/

FQLチュートリアルもチェックしてください。

https://developers.facebook.com/docs/howtos/run-fql-queries-ios-sdk/

于 2012-12-15T01:53:42.693 に答える