在Android中获取Facebook个人资料图片

时间:2015-07-08 21:08:34

标签: java android facebook facebook-graph-api

我正在构建一个Android应用程序并已成功集成Facebook登录作为唯一的注册和登录形式。我正在尝试找出获取用户个人资料图片的最佳方式,我已经允许开发人员文档 - https://developers.facebook.com/docs/graph-api/reference/user/picture/,但我不知道如何处理响应,我的意思是我如何实际获取响应中的图像,通过位图或网址链接发送,我不太确定。

以下是文档提供的用于获取个人资料照片的代码

    /* make the API call */
new GraphRequest(
    AccessToken.getCurrentAccessToken(),
    "/{user-id}/picture",
    null,
    HttpMethod.GET,
    new GraphRequest.Callback() {
        public void onCompleted(GraphResponse response) {
            /* handle the result */
        }
    }
).executeAsync();

感谢您的帮助

1 个答案:

答案 0 :(得分:4)

你必须像Docs那样执行GraphRequest,但这就是你这样做的方式。 在XML布局中使用Facebook的ProfilePictureView

XML布局

<com.facebook.login.widget.ProfilePictureView
        android:id="@+id/myProfilePic"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:layout_marginTop="16dp"
        android:layout_marginBottom="16dp"/>

活动/片段代码

ProfilePictureView profilePic = (ProfilePictureView) dialogView.findViewById(R.id.myProfilePic);
GraphRequestAsyncTask request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
    @Override
    public void onCompleted(JSONObject user, GraphResponse response) {
        if (user != null) {
            // set the profile picture using their Facebook ID
            profilePic.setProfileId(user.optString("id"));
        }
    }
}).executeAsync();