2017-01-27 2 views
0

Мне сложно получить информацию о пользователе через SDK на Facebook.Невозможно получить информацию о пользователе (день рождения, работа, образование)

Я пытаюсь получить день рождения, работу и образование.

Я использую это:

let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"education, work, email, id, name, first_name, last_name, birthday, gender"]) 

Это называют не обеспечивает образование, работу или день рождения.

Я следующие права утверждены Facebook:

  • user_birthday
  • user_education_history
  • user_work_history

Когда я пытаюсь использовать эти значения в примере кода выше, сбой приложения с несуществующим полем:

type (User), com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorCode=100, com.facebook.sdk:FBSDKGraphRequestErrorParsedJSONResponseKey={ 
    body =  { 
     error =   { 
      code = 100; 
      "fbtrace_id" = CVy14JLKraa; 
      message = "(#100) Tried accessing nonexisting field (user_birthday) on node type (User)"; 
      type = OAuthException; 
     }; 
    }; 
    code = 400; 
}} 

Когда я пытаюсь использовать запрос граф с идентификатором пользователя против меня:

let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "/\(fbid)", parameters: ["fields":"user_birthday"]) 
        graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in ... 

я получаю ту же ошибку:

message = "(#100) Tried accessing nonexisting field (user_birthday) on node type (User)"; 

Любые предложения?

+0

Нет поля, называемого user_birthday. – WizKid

+0

http://stackoverflow.com/a/40082252/6656894 ответьте на этот вопрос –

+0

http://stackoverflow.com/a/40816501/6656894, а также ответьте на этот вопрос –

ответ

0

Пожалуйста, сделайте так, как следует. Возможно, вы будете работать.

#define K_Field @"fields" 
#define K_Permission @"email,location, birthday, name, link" 
#define K_ID @"id" 
#define K_Name @"name" 
#define K_DOB @"birthday" 
#define K_Email @"email" 



     FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; 
     [login logOut]; 
     login.loginBehavior = FBSDKLoginBehaviorWeb; 

     [login 
     logInWithReadPermissions: @[K_Email] 
     fromViewController:self 
     handler:^(FBSDKLoginManagerLoginResult *user, NSError *error) { 
      if (error || user.isCancelled) { 
       NSLog(@"Process error"); 
      } else { 
       if ([FBSDKAccessToken currentAccessToken]) { 
        [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{K_Field: K_Permission}] 
         startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { 
          if (!error) { 
           NSLog(@"fetched user:%@", result); 
           //Done login 
          } 
         }]; 
       } 
      } 
     }]; 

Пожалуйста, убедитесь, что вы используете правильный ключевое слово То же, что facebook official docs

0

Можно с помощью API Facebook Graph, собирая идентификатор пользователя и получать государственные детали от доступа к Graph API:

$fb->get('/me?fields=name,first_name,last_name,email,birthday');