bugfix> android > 投稿

このコードを使用していますが、無効なスコープのエラーが表示されます

この名、姓、メールにアクセスしたいです。

誰もこれで何が間違っているのか私を助けることができます。

それはFacebookの許可の変更のためですか??

または、他の何か?

私は何か他のものを追加する必要がありますか。

   public class MainActivity extends AppCompatActivity {
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        callbackManager.onActivityResult(requestCode,resultCode,data);
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        callbackManager = CallbackManager.Factory.create();
        final LoginButton loginButton= (LoginButton)findViewById(R.id.loginButton);
        loginButton.setReadPermissions(Arrays.asList("email","name"));
        loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {

                String accessToken = loginResult.getAccessToken().getToken();
                GraphRequest request= GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                    @Override
                    public void onCompleted(JSONObject object, GraphResponse response) {
                        progressDialog.dismiss();
                        getData(object);
                    }
                });
                Bundle parameters = new Bundle();
                parameters.putString("fields","id,email,first_name,last_name");
                request.setParameters(parameters);
                request.executeAsync();
            }
        });
    }

    private void getData(JSONObject object)
    {
        try{
            email.setText(object.getString("email"));
            first_name.setText(object.getString("first_name"));
            last_name.setText(object.getString("last_name"));
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

回答 3 件
  • loginButton.setReadPermissions("public_profile");
    
    

    この許可を設定して使用する

    protected void getUserDetails(LoginResult loginResult) {
            GraphRequest data_request = GraphRequest.newMeRequest(
                    loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                        @Override
                        public void onCompleted(
                                JSONObject json_object,
                                GraphResponse response) {
       //here is your login is success now your requirement is start From here
       //do your work
        Log.e("String Response from Facebook:>",json_object.toString())
    
                        }
                    });
            Bundle permission_param = new Bundle();
      //width and height is optional parameters
            permission_param.putString("fields", "id,name,email,picture.width(120).height(120)");
            data_request.setParameters(permission_param);
            data_request.executeAsync();
    
    

  • これの代わりに

    first_name.setText(object.getString("first_name"));
                last_name.setText(object.getString("last_name"));
            }
    
    

    あなたはfacebeookから直接名前を取得する必要があります

    facebookUser.name = object.getString("name");
    
    

    試してみて、名前と姓を取得するには、分割する必要があります。

  • 私はそれを削除した後に必要ではない電子メールで許可で名前を渡しました。答えてくれてありがとう

あなたの答え