Android Facebook-获取空个人资料 [英] Android Facebook - get null profile

查看:73
本文介绍了Android Facebook-获取空个人资料的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

首次使用Facebook SDK.我无法获取用户个人资料.它始终为null.怎么了?

First time with Facebook SDK. I can't get users profile. Its always null. What's wrong?

btnFbWidget = (LoginButton) findViewById(R.id.btnFbWidget);
btnFbWidget.setReadPermissions("public_profile");
// Callback registration
btnFbWidget.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
    @Override
    public void onSuccess(LoginResult loginResult) {
        Profile profile = Profile.getCurrentProfile();
        if (profile != null)
            Toast.makeText(getApplicationContext(), "LogIN as " + profile.getName(), Toast.LENGTH_SHORT).show();
        else 
            Toast.makeText(getApplicationContext(), "nulll", Toast.LENGTH_SHORT).show();
    }
                /*...*/
});

推荐答案

尝试使用此方法.

首先初始化facebook SDK.

Initialize facebook SDK firstly.

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

    //init facebook sdk and 
    FacebookSdk.sdkInitialize(getApplicationContext());

    setContentView(R.layout.activity_main);



    //instantiate callbacks manager
    mCallbackManager = CallbackManager.Factory.create();

   btnFbWidget=(LoginButton)findViewById(R.id.login_button);

   btnFbWidget.registerCallback(mCallbackManager, this);

  btnFbWidget.setReadPermissions(Arrays.asList("user_status","email"));



}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);
    //manage login result
    mCallbackManager.onActivityResult(requestCode, resultCode, data);
}


public void onSuccess(LoginResult loginResults) {



    Toast.makeText(getApplicationContext(), "Success ",
               Toast.LENGTH_LONG).show();


}
public void onCancel() {



}


public void onError(FacebookException e) {


}

然后使用此方法获取用户配置文件.

私有静态字符串uid,email;

private static String uid,email;

public void getUserProfile(){

public void getUserProfile() {

GraphRequest request = GraphRequest.newMeRequest(
        AccessToken.getCurrentAccessToken(),
        new GraphRequest.GraphJSONObjectCallback() {
            @Override
            public void onCompleted(
                    JSONObject object,
                    GraphResponse response) {
                // Application code
                Log.v("LoginActivity", response.toString());

                try {
                    //and fill them here like so.
                    uid = object.getString("id");
                    email = object.getString("email")

                } catch (JSONException e) {
                    e.printStackTrace();
                }
                getGroups();
            }
        });
  // If you want to pass data to other activity. 
  Bundle parameters = new Bundle();
  parameters.putString("userdata", "email");
  request.setParameters(parameters);
  request.executeAsync();

}

并在创建时调用此方法getUserProfile().

更改读取权限.

btnFbWidget.setReadPermissions(Arrays.asList("public_profile", "email", "user_birthday", "user_friends"));

因此,您可以获得诸如此类的更多信息.

And accordingly you can get further information like.

String email = object.getString("email");
String birthday = object.getString("birthday");

这篇关于Android Facebook-获取空个人资料的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆