3

.hファイルに実装FBFriendPickerDelegateし、次のデリゲートを使用して情報を取得しました。

-(BOOL)friendPickerController:(FBFriendPickerViewController *)friendPicker
shouldIncludeUser:(id <FBGraphUser>)user
{
NSLog(@"Birthday:%@",user.birthday);
return YES;
} 

しかし、NSLogで毎回null値を取得します...以下は結果です。NSLogにアクセスします:

Birthday:(null) 2012-09-28 10:20:22.450
MyFacebookApp[455:207] Birthday:(null) 2012-09-28 10:20:22.451
MyFacebookApp[455:207] Birthday:(null) 2012-09-28 10:20:22.452
MyFacebookApp[455:207] Birthday:(null) 2012-09-28 10:20:22.454
MyFacebookApp[455:207] Birthday:(null)

私が何か間違ったことをしているのか教えてください。

4

5 に答える 5

3

最初に適切な権限を要求しましたか?

ユーザーの応答にアクセスする必要がuser_birthdayあります。friends_birthday友達の誕生日、およびuser_location/friends_location現在の場所を取得します。

また、現在のユーザーがこれらの友達にアクセス許可を与える場合でも、必ずしもすべての友達に要求されたデータを取得することを意味するわけではありません。アプリが友達に代わってその情報にアクセスできるかどうかは、これらのユーザーの個々の設定によって異なります。

特に誕生日のフィールドでは、日と月だけが表示され、年は表示されない場合があります。またはもちろん、他の情報と同様に、何もありません。

于 2012-09-28T13:57:07.107 に答える
2

ついに答えを得ました....誕生日はGraphAPIを使用して取得できます

https://graph.facebook.com/me/friends?fields=id,name,birthday&access_token=your_access_token

詳細については、このドキュメントも参照して ください。

于 2012-10-12T07:36:29.247 に答える
0

友達のユーザー名、誕生日、場所を取得することはできないと思いますが、ログインしているユーザーのユーザー名、誕生日、すべてのデータを取得できます。解決策が見つかった場合は、お知らせください。

于 2012-09-28T06:45:19.800 に答える
0

友達リストに追加する前に、友達リストの各ユーザーを照会する必要があります。

デフォルトでは、フレンドリストのFBGraphUserオブジェクトには、IDと名前の2つのフィールドしか含まれていません。各友達のユーザーIDを照会すると、より多くの情報を取得できます。

Graph APIを使用した例:

    [FBRequestConnection startWithGraphPath:[friend id] 
completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
// result is your FBGraphUser object for the queried friend
}

更新:私はこれを見落としました:クエリパラメータフィールドを使用してすべての友達とその誕生日を取得する方法があります。ここで、必要なフィールドを指定できます。(許可がある場合)

http://graph.facebook.com/me/friends?fields=id,name,birthday

于 2013-06-24T15:19:38.210 に答える
0

これが、1つの幸せな場所に必要なすべてのコードです。私はこれを達成するためにたくさんの投稿を読まなければなりませんでした。そのストレートコピーアンドペーストコード。役に立ったら評価してください。

*.mファイル内

#import <FacebookSDK/FacebookSDK.h>

/******************
 FACEBOOK
 ******************/

- (IBAction) facebookActionBtn
{

    // Open session with public_profile (required) and user_birthday read permissions
    [FBSession openActiveSessionWithReadPermissions:@[@"public_profile", @"user_friends"]
                                       allowLoginUI:YES
                                  completionHandler:
     ^(FBSession *session, FBSessionState state, NSError *error) {
         __block NSString *alertText;
         __block NSString *alertTitle;
         if (!error){
             // If the session was opened successfully
             if (state == FBSessionStateOpen)
             {
                 // Your code here
                 NSLog(@"all good ..");

                 [self getUserFriendsBDays];

             }
             else
             {
                 // There was an error, handle it
                 if ([FBErrorUtility shouldNotifyUserForError:error] == YES)
                 {

                     alertTitle = @"Something went wrong";
                     alertText = [FBErrorUtility userMessageForError:error];
                     [[[UIAlertView alloc] initWithTitle:alertTitle
                                                 message:alertText
                                                delegate:self
                                       cancelButtonTitle:@"OK!"
                                       otherButtonTitles:nil] show];

                 } else {
                     // If the user cancelled login
                     if ([FBErrorUtility errorCategoryForError:error] == FBErrorCategoryUserCancelled)
                     {
                         alertTitle = @"Login cancelled";
                         alertText = @"Your friends birthday will not be entered in our calendar because you didn't grant the permission.";
                         [[[UIAlertView alloc] initWithTitle:alertTitle
                                                     message:alertText
                                                    delegate:self
                                           cancelButtonTitle:@"OK!"
                                           otherButtonTitles:nil] show];

                     } else {
                         NSLog(@"error 2 ..");
                     }
                 }
             }
         }
     }];

}

- (IBAction) getUserFriendsBDays
{

    NSLog(@"promptUserForFriendsBDays ...");




    NSString *fbAccessToken = [[[FBSession activeSession] accessTokenData] accessToken];
    //NSLog(@"permissions::%@ ... fbAccessToken: %@ ...",FBSession.activeSession.permissions, fbAccessToken);


    NSString *request = [NSString stringWithFormat:@"https://graph.facebook.com/me/friends?fields=id,name,birthday&access_token=%@",fbAccessToken];
    NSURL *URL = [NSURL URLWithString:request];

    NSError *error;
    NSString *FBOutPutStr = [NSString stringWithContentsOfURL:URL encoding:NSUTF8StringEncoding error:&error];
    //NSLog(@"FBOutPutStr: %@ ...", FBOutPutStr);


    // Convert to JSON object:
    NSDictionary* jsonObject = [NSJSONSerialization JSONObjectWithData:[FBOutPutStr dataUsingEncoding:NSUTF8StringEncoding] options:0 error:NULL];
    //NSLog(@"jsonObject=%@ ...", jsonObject);

    NSArray* dataField = [[NSArray alloc] initWithArray:[jsonObject objectForKey:@"data"]];
    NSLog(@"dataField=%@ ...", dataField);


    // Extract values:
    NSArray *userIDArray = [dataField valueForKey:@"id"];
    NSArray *userNameArray = [dataField valueForKey:@"name"];
    NSArray *userBdayArray = [dataField valueForKey:@"birthday"];

    NSLog(@"userIDArray=%d ... userNameArray=%d ... userBdayArray=%d ...", [userIDArray count],[userNameArray count],[userBdayArray count]);

}
于 2014-07-09T20:11:07.777 に答える