安卓 - Fabric.io Twitter REST API个人资料图片

6

请问是否有一种方法可以拉取已登录用户的个人资料图片,并将其放置在应用程序中,例如在ActionBar上随着用户浏览而更改?

欢迎提供提示、技巧、示例和下载链接 :)

如果您能帮我,请假设我对基本Java之外的任何内容都知之甚少!

再次感谢各位 x

3个回答

9
您可以使用/1.1/users/show.json来获取用户的个人资料图片。您可以参考REST API URLs来获取Twitter数据。
通过扩展TwitterApiClient,我们可以从URL中检索Twitter数据。
class MyTwitterApiClient extends TwitterApiClient {
    public MyTwitterApiClient(TwitterSession session) {
        super(session);
    }

    public UsersService getUsersService() {
        return getService(UsersService.class);
    }
}

interface UsersService {
    @GET("/1.1/users/show.json")
    void show(@Query("user_id") Long userId,
            @Query("screen_name") String screenName,
            @Query("include_entities") Boolean includeEntities,
            Callback<User> cb);
}

接下来,获取UsersService并调用其show方法,传递定义的查询参数。我根据记录的参数定义了查询参数。
new MyTwitterApiClient(session).getUsersService().show(12L, null, true,
new Callback<User>() {
    @Override
    public void success(Result<User> result) {
        Log.d("twittercommunity", "user's profile url is "
                + result.data.profileImageUrlHttps);
    }

    @Override
    public void failure(TwitterException exception) {
        Log.d("twittercommunity", "exception is " + exception);
    }
});

致谢:https://twittercommunity.com/t/android-get-user-profile-image/30579/2

这篇文章讨论了如何在Android应用程序中获取Twitter用户的个人资料图片。要实现此功能,您需要使用Twitter API和Picasso库。首先,您需要获取用户的Twitter ID。然后,使用Twitter API检索用户的个人资料信息,其中包括他们的个人资料图片URL。最后,使用Picasso库加载图像并将其设置为ImageView的源。这样,您就可以在应用程序中显示Twitter用户的个人资料图片了。


我不得不在MyTwitterApiClient内部定义接口并将其设置为public,才能使其正常工作。 - tread
谢谢,伙计。我正在搜索它!:) - user4697172
新的Callback<User>()中的User应该是什么?应该是twitter4j.User还是其他什么东西? - Narendra Singh
com.twitter.sdk.android.core.models.User - Anoop M Maddasseri

5
这是我让我的工作正常运行的方法:
            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 profilebannerurl = userResult.data.profileBannerUrl;
                    String profileurl = userResult.data.profileImageUrl;

                }

                @Override
                public void failure(TwitterException e) {

                }
            });

我已经将这段代码放在我的LoginButton回调方法中:

    loginButton.setCallback(new Callback<TwitterSession>() {
        @Override
        public void success(Result<TwitterSession> result) { <insert here> }

我做了完全相同的事情,但我仍然遇到回调为空的问题。有任何想法是什么问题?我也添加了button.onActivityResult(requestCode, resultCode, data); - LEE
我认为在实现任何 Twitter 功能(如获取个人资料图片等)之前,最好先检查是否已经登录到 Twitter。这通常是返回 null 的原因。当我开始时,我曾经因为注销了但仍然尝试获取个人资料图片等而返回 null,因为我没有授权这样做。 - Simon
好的,Simon。我会检查一下。谢谢 :) - LEE
新的Callback<User>()中的User应该是什么?应该是twitter4j.User还是其他什么? - Narendra Singh
这是一个回调方法,返回一个名为Result<User> userResult的对象。从userResult中,您可以查询所有用户字段,例如userResult.data.name。 - Simon
我尝试了同样的方法,但是无论成功还是失败都没有被调用。 - Narendra Singh

1

我使用了自定义按钮,并且这是由它的onClick监听器执行的代码:

TwitterAuthConfig authConfig =  new TwitterAuthConfig(TWITTER_API_KEY, TWITTER_API_SECRET);
Fabric.with(activity, new Twitter(authConfig));

TwitterCore.getInstance().getApiClient().getAccountService().verifyCredentials(false, false, new com.twitter.sdk.android.core.Callback<User>() {
    @Override
    public void success(Result<User> result) {
        Log.d(TAG, "Twitter log in success");

        String userName = result.data.screenName;
        int userId = result.data.id;
        String pictureUrl = result.data.profileImageUrl;
        String coverUrl = result.data.profileBannerUrl;
    }

    @Override
    public void failure(TwitterException e) {
        Log.d(TAG, "Twitter log in error : " + e.getMessage());
    }
});

我应该向用户请求授权以访问您的应用程序,并在他同意后将其登录。

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