2017-02-27 15 views
0

これは私がユーザーの詳細を得るためにやっていることです。私は、ユーザーの誕生日は、事前に、コードのおかげで下のチェックtoo.please取得したい、FBID、ユーザー名とusergenderを取得することができています: -Facebookのユーザーの誕生日は、グラフリクエストアンドロイドを使用していますか?

GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), 
        new GraphRequest.GraphJSONObjectCallback() { 
         @Override 
         public void onCompleted(JSONObject user, GraphResponse response) { 
          // Application code 
          if (AccessToken.getCurrentAccessToken() != null) { 
           if (user != null) { 
            Log4Android.e(FaceBookLogin.this, user.toString()); 
    //        Log.e("onCompleted ", " 1= > " + new Gson().toJson(user)); 
            facebookUser = new Gson().fromJson(user.toString(), FacebookUser.class); 
            try { 
    //         Log.e("onCompleted ", " 2= > " + new Gson().toJson(user)); 
             Log.e("onCompleted ", " 22= > " + new Gson().toJson(facebookUser)); 
             if (facebookUser.getEmail() != null || !facebookUser.getEmail().equals("")) { 
              checkUserStatus(context, facebookUser.getId()); 
             } else { 
              UtilitySingleton.getInstance(context).ShowToast(R.string.email_error); 
             } 
            } catch (Exception e) { 
             e.printStackTrace(); 
             facebookUser = getUsableData(response); 
             UtilitySingleton.getInstance(context).ShowToast(R.string.email_error); 
            } 
           } 
          } 
         } 
        }); 

      Bundle parameters = new Bundle(); 
    //  parameters.putString("fields", "id,name,email,first_name,last_name"); 
      parameters.putString("fields", "id,name,email,gender,birthday,first_name,last_name"); 
      request.setParameters(parameters); 
      request.executeAsync(); 
+0

あなたはどのようなアクセス許可を求めていますか?ユーザーの誕生日を取得するには特別な権限があります: "user_birthday"。 – Idan

+0

user_birthdayこの権限は正常に機能しました。 .setReadPermissions(Arrays.asList( "public_profile"、 "user_birthday"、 "user_likes")); –

+0

が答えとして追加されました... – Idan

答えて

1

どのようなアクセス許可を求めていますか? ユーザーの誕生日を取得するには、「user_birthday」というアクセス許可が必要です。

1

許可を得るためには、自分のFacebookのダッシュボードに行く>アプリケーションのレビュー>提出を開始>とあなたは、コードのこれらの線に沿って何かを行うことができます

をuser_birthday選択 -

if (AccessToken.getCurrentAccessToken() != null) { 
    GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), 
       new GraphRequest.GraphJSONObjectCallback() { 
        @Override 
        public void onCompleted(JSONObject user, GraphResponse response) { 
         if (response != null && response.getJSONObject() != null) { 

          try { 
           String birthDate = response.getJSONObject().getString("birthday"); 
          } catch (JSONException e) { 
           e.printStackTrace(); 
          } 
         } 
        } 
       }); 

     Bundle parameters = new Bundle(); 

     parameters.putString("fields","id,name,email,gender,birthday,first_name,last_name"); 
     request.setParameters(parameters); 
     request.executeAsync(); 
} 

をそして、あなたは常にGraphRequestを送信する前に、アクセストークンをチェックする必要があります。

+0

org.json.JSONException:誕生日の値がありません –

+0

したがって、基本的にユーザーの誕生日を読む権限がありません。許可を得るには、あなたのFacebookのダッシュボード> App Review>投稿を開始>に進み、user_birthdayを選択してください –

1

これは私のproplemをお解か: -

String BIRTHDATE = "user_birthday"; 

    public static final String[] FACEBOOK_PERMISSIONS = {ValueKeys.PUBLIC_PROFILE, ValueKeys.EMAIL, BIRTHDATE}; 

LoginManager.getInstance().logInWithReadPermissions((Activity) context, Arrays.asList(FACEBOOK_PERMISSIONS)); 
関連する問題