14

私は次のように電子メールの許可を得てFacebookセッションを開いています:

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

そして、変更されたセッション状態の重要なスニペットは次のようになります。

- (void)sessionStateChanged:(FBSession *)session
                      state:(FBSessionState) state
                      error:(NSError *)error {
    switch (state) {
        case FBSessionStateOpen: {
            [[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) {
             if (error) {
                //error
             } else {
                 self.myFirstNameLabel.text = user.first_name;
                 self.myLastNameLabel.text = user.last_name;
                 // self.myEmailLabel.text = @"";
             }
         }];
    }
    ...

ユーザーの電子メールを実際に抽出するにはどうすればよいですか?提供されている変数の1つに含まれていますか、それとも完了ハンドラー内で別の呼び出しを行う必要がありますか?

前もって感謝します!

4

2 に答える 2

26

FBGraphUserにはプロパティがありません(オプションであるため、電子メールの許可を求めた場合にのみ使用可能であると想定しています)が、次のように辞書からアクセスできるはずです。

[user objectForKey:@"email"]
于 2012-11-21T00:23:37.053 に答える
0

適切な許可を求める前に確認する必要があります

loginView.readPermissions = @[@"public_profile", @"email"];
于 2014-08-28T16:28:12.873 に答える