如何使用Twitter kit在安卓设备上获取个人资料图片

8
我正在尝试实现一个使用Twitter kit的简单应用程序。问题是我无法获取个人资料图片。如有帮助,将不胜感激。
谢谢。
4个回答

17

根据官方文档:

您可以从GET users/show中获取用户最近的个人资料图片。在用户对象内,您将找到profile_image_urlprofile_image_url_https字段。这些字段将包含用户上传图像的调整大小的“normal”变体。此“normal”变体通常为48x48px。

通过修改URL,您可以检索其他变体大小,例如“bigger”,“mini”和“original”。

遵循以下代码:

TwitterApiClient twitterApiClient = TwitterCore.getInstance().getApiClient();
twitterApiClient.getAccountService().verifyCredentials(false, false, new Callback<User>() {
    @Override
    public void success(Result<User> userResult) {
        String name = userResult.data.name;
        String email = userResult.data.email;

        // _normal (48x48px) | _bigger (73x73px) | _mini (24x24px)  
        String photoUrlNormalSize   = userResult.data.profileImageUrl;
        String photoUrlBiggerSize   = userResult.data.profileImageUrl.replace("_normal", "_bigger");
        String photoUrlMiniSize     = userResult.data.profileImageUrl.replace("_normal", "_mini");
        String photoUrlOriginalSize = userResult.data.profileImageUrl.replace("_normal", "");
    }

    @Override
    public void failure(TwitterException exc) {
        Log.d("TwitterKit", "Verify Credentials Failure", exc);
    }
});

有关详细信息,请参阅Twitter API文档|个人资料图片和横幅


15

截至2016年11月,这个方法是有效的。现在实现验证凭据的方式有所改变。

Call<User> user = TwitterCore.getInstance().getApiClient().getAccountService().verifyCredentials(false, false);
           user.enqueue(new Callback<User>() {
                       @Override
                        public void success(Result<User> userResult) {
                            String name = userResult.data.name;
                            String email = userResult.data.email;

                            // _normal (48x48px) | _bigger (73x73px) | _mini (24x24px)
                            String photoUrlNormalSize   = userResult.data.profileImageUrl;
                            String photoUrlBiggerSize   = userResult.data.profileImageUrl.replace("_normal", "_bigger");
                            String photoUrlMiniSize     = userResult.data.profileImageUrl.replace("_normal", "_mini");
                            String photoUrlOriginalSize = userResult.data.profileImageUrl.replace("_normal", "");
                        }

                        @Override
                        public void failure(TwitterException exc) {
                            Log.d("TwitterKit", "Verify Credentials Failure", exc);
                        }
                    });

13

找到了答案。

有一个回调函数会返回给你User对象。

TwitterCore.getInstance().getApiClient().getAccountService().verifyCredentials(true, true, false).enqueue(new Callback<User>() {
    @Override
    public void success(Result<User> result) {

    }

    @Override
    public void failure(TwitterException exception) {

    }
});

在成功分支上,您可以通过调用以下方法获取User对象:

User user = userResult.data;

通过这个对象,您可以获取用户的所有信息。对于个人资料图片:

String profileImage = user.profileImageUrl;

那很好,谢谢。 它正在检索头像的非常低分辨率版本。你能获取更高质量的吗? - Felipe Caldas
我尝试了相同的方法,但是既没有成功也没有失败被调用。 - Narendra Singh

7

从gradle 2.0.0及以上版本,请使用以下方法:

    Call<User> userResult=Twitter.getApiClient(session).getAccountService().verifyCredentials(true,false);
                    userResult.enqueue(new Callback<User>() {
                        @Override
                        public void success(Result<User> result) {
                            User user = userResult.data;
                            String profileImage= user.profileImageUrl;
                        }

                        @Override
                        public void failure(TwitterException exception) {

                        }
                    });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接