2016-12-28 4 views
0

誕生日&の性別にアクセスしたいが、誕生日にアクセスしようとするとエラーが発生する。Facebook SDKのバージョンfacebook-android-sdk :4.18.0。FacebookのAndroidの誕生日にアクセスする際に存在しないフィールドエラー

それは私に、このエラーを与える:ここで

{Response: responseCode: 400, graphObject: null, error: {HttpStatus: 400, errorCode: 100, errorType: OAuthException, errorMessage: (#100) Tried accessing nonexisting field (user_birthday) on node type (User)}}

は私のコードです:あなたが誕生日の代わりに、ユーザーの誕生日を使用すべきパラメータで

public class MainActivity extends AppCompatActivity { 
    private CallbackManager callbackManager; 
    private TextView info; 
    private LoginButton loginButton; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     FacebookSdk.sdkInitialize(getApplicationContext()); 
     callbackManager = CallbackManager.Factory.create(); 

     setContentView(R.layout.activity_main); 
     info = (TextView)findViewById(R.id.info); 
     loginButton = (LoginButton)findViewById(R.id.login_button); 
     loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 
       GraphRequest request = GraphRequest.newMeRequest(
         loginResult.getAccessToken(), 
         new GraphRequest.GraphJSONObjectCallback() { 
          @Override 
          public void onCompleted(JSONObject object, GraphResponse response) { 
           Log.v("LoginActivity", response.toString()); 

           // Application code 
           String email = object.optString("email"); 
           String birthday = object.optString("birthday"); 
           String name = object.optString("name"); // 01/31/1980 format 
           info.setText("email: " + 
             email + "\n" + 
             "birthday " + birthday+ 
           "\n name"+name); 
          } 
         }); 
       Bundle parameters = new Bundle(); 
       parameters.putString("fields", "id,name,email,gender,user_birthday"); 
       request.setParameters(parameters); 
       request.executeAsync(); 

      } 

      @Override 
      public void onCancel() { 
       info.setText("Login attempt cancelled."); 
      } 

      @Override 
      public void onError(FacebookException e) { 
       info.setText("Login attempt failed."); 
      } 
     }); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     callbackManager.onActivityResult(requestCode, resultCode, data); 
    } 
} 

答えて

6

parameters.putString("fields", "id, name, email, gender, birthday"); 

参照してください。ユーザーの利用可能なフィールドのドキュメント: https://developers.facebook.com/docs/graph-api/reference/user/

+0

まだ応答できません。レスポンス:responseCode:200、graphObject:{"id": "1710395395652830"、 "name": "Avez Shaikh"、 "gender": "male"}、エラー:null } –

+0

私はこの例(http://www.programcreek.com/java-api-examples/index.php?api=com.facebook.GraphRequest)を見ており、すべてがうまくいくようです。あなたは200の応答と有効なデータを取得しています。つまり、要求はOKです。誕生日のデータがあなたのユーザーのためにFBに設定されていない可能性はありますか? –

関連する問題