それからちょうどボタンアクションでコードの下に呼び出します。 参照ください:fbResultDataで
-(void)FBLogin{
NSMutableDictionary *fbResultData;
fbResultData =[[NSMutableDictionary alloc]init];
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithReadPermissions: @[@"public_profile", @"email", @"user_friends"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
NSLog(@"Process error");
} else if (result.isCancelled) {
NSLog(@"Cancelled");
} else {
NSLog(@"Logged in");
if ([FBSDKAccessToken currentAccessToken])
{
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me?fields=id,name,age_range,birthday,devices,email,gender,last_name,family,friends,location,picture" parameters:nil]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
if (!error) {
NSString * accessToken = [[FBSDKAccessToken currentAccessToken] tokenString];
NSLog(@"fetched user:%@ ,%@", result,accessToken);
if ([result objectForKey:@"email"]) {
[fbResultData setObject:[result objectForKey:@"email"] forKey:@"email"];
}
if ([result objectForKey:@"gender"]) {
[fbResultData setObject:[result objectForKey:@"gender"] forKey:@"gender"];
}
if ([result objectForKey:@"name"]) {
NSArray *arrName;
arrName=[[result objectForKey:@"name"] componentsSeparatedByString:@" "];
[fbResultData setObject:[arrName objectAtIndex:0] forKey:@"name"];
}
if ([result objectForKey:@"last_name"]) {
[fbResultData setObject:[result objectForKey:@"last_name"] forKey:@"last_name"];
}
if ([result objectForKey:@"id"]) {
[fbResultData setObject:[result objectForKey:@"id"] forKey:@"id"];
}
[fbResultData setObject:accessToken forKey:@"Access Token"]; //m
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
initWithGraphPath:[NSString stringWithFormat:@"me/picture?type=large&redirect=false"]
parameters:nil
HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
id result,
NSError *error) {
if (!error){
if ([[result objectForKey:@"data"] objectForKey:@"url"]) {
[fbResultData setObject:[[result objectForKey:@"data"] objectForKey:@"url"] forKey:@"picture"];
}
NSLog(@"Final data of FB login********%@",fbResultData);
} }];
}
else {
NSLog(@"result: %@",[error description]);
UIAlertController *alert=[UIAlertController alertControllerWithTitle:NSLocalizedString(@"Error", nil) message:[error description] preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *alertBtnOk=[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action)
{
[alert dismissViewControllerAnimated:YES completion:nil];
}];
[alert addAction:alertBtnOk];
[self presentViewController:alert animated:YES completion:nil];
}
}];
}
else{
[[FBSDKLoginManager new] logOut];
}
}
}];}
を、あなたは、すべてのユーザーデータを取得しますが、これらのファイルをインポートすることを忘れないでください:
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>
データにアクセスするコードはどこですか?あなたはdocsとapiリファレンスをチェックアウトしましたか?このためのコード例があります。また、変更ログの「宣言フィールド」についても読んでください。 – luschn
はい - データにアクセスするコードはまさに私が求めているものです。私はここに "宣言フィールド"が見つかりましたが、正確には関連していないようです:https://developers.facebook.com/docs/apps/changelog – daspianist
公式のドキュメントにあるすべてのAPIエンドポイントのサンプルコードがあります。 APIリファレンスを出してください。宣言型フィールドは確実に関連していますが、宣言型フィールドを持たないIDと名前しか取得できません。 – luschn