如何从Android App获取Facebook个人资料图片?

mik*_*_x_ 1 android facebook

我在Android上用"登录facebook"创建了一个简单的测试应用程序.

这是我的代码:

public class MainActivity extends AppCompatActivity {

    private TextView info;
    private LoginButton loginButton;
    private CallbackManager callbackManager;

    String email;
    String birthday;
    String name;
    String gender;

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

        FacebookSdk.sdkInitialize(getApplicationContext());

        setContentView(R.layout.activity_main);

        callbackManager = CallbackManager.Factory.create();

        info = (TextView)findViewById(R.id.fb_text);
        loginButton = (LoginButton)findViewById(R.id.fb_login);
        loginButton.setReadPermissions(Arrays.asList("public_profile", "email", "user_birthday"));


        loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                info.setText(
                        "User ID: "
                                + loginResult.getAccessToken().getUserId()
                                + "\n" +
                                "Auth Token: "
                                + loginResult.getAccessToken().getToken()
                );

                GraphRequest request = GraphRequest.newMeRequest(
                        loginResult.getAccessToken(),
                        new GraphRequest.GraphJSONObjectCallback() {
                            @Override
                            public void onCompleted(JSONObject object, GraphResponse response) {
                                Log.v("LoginActivity", response.toString());

                                // Application code
                                try {
                                    email = object.getString("email");
                                    birthday = object.getString("birthday"); // 01/31/1980 format
                                    name = object.getString("name");
                                    gender = object.getString("gender");
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }

                                info.append(
                                        "User Name: " + name
                                                + "\n" +
                                                "birthday: "
                                                + birthday
                                                + "\n" +
                                                "Gender: "
                                                + gender
                                                + "\n" +
                                                "Email: "
                                                + email
                                );
                            }
                        });
                Bundle parameters = new Bundle();
                parameters.putString("fields", "id,name,email,gender,birthday");
                request.setParameters(parameters);
                request.executeAsync();
            }

            @Override
            public void onCancel() {
                info.setText("Login Cancelled");

            }

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


    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        callbackManager.onActivityResult(requestCode, resultCode, data);
    }
}
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能获得用户的个人资料照片并将其显示在我的活动中?

Bho*_*_BB 6

只需在现有代码中添加以下参数即可

parameters.putString("fields", "id,name,email,gender,birthday,picture.type(large)");
Run Code Online (Sandbox Code Playgroud)

picture.type(large)将返回您的个人资料图片的网址

顺便说一句,您可以从Facebook返回的JSONObject获取该URL,如下所示:

profilePicUrl = object.getJSONObject("picture").getJSONObject("data").getString("url");
Run Code Online (Sandbox Code Playgroud)