【问题标题】:Android - Fabric.io Twitter REST API profile image / pictureAndroid - Fabric.io Twitter REST API 个人资料图片/图片
【发布时间】:2015-04-14 18:58:34
【问题描述】:

有谁知道是否有办法将已登录用户的个人资料图片拉到应用程序中,以便在他们浏览时将其放置在 ActionBar 上?

欢迎所有提示、提示、示例、下载 :)

如果你能帮助我,请假设我对基本 Java 之外的任何东西知之甚少!

再次感谢大家x

【问题讨论】:

    标签: android twitter twitter-fabric fabric.io


    【解决方案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());
        }
    });
    

    如果他接受,我应该要求用户授权访问您的应用并让他登录。

    【讨论】:

      【解决方案2】:

      这就是我的工作方式:

                  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);
      • 我想在你实现任何 twitter 功能(如获取个人资料图片等)之前检查你是否登录过 twitter。这就是它返回 null 的常见原因。当我开始时,我一直在努力解决这个问题,我会注销然后仍然尝试获取个人资料图片等,它会返回 null,因为我没有这样做的授权。
      • 好的,西蒙。会检查的。谢谢:)
      • new Callback() 中的用户应该是什么?应该是 twitter4j.User 还是别的什么?
      • 这是一个回调方法,返回一个名为 Result userResult 的对象。从 userResults 你可以通过 userResult.data.name 查询所有用户字段。
      【解决方案3】:

      您可以使用/1.1/users/show.json 获取用户的个人资料图片。 Twitter数据可以参考REST API URLs

      通过扩展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

      【讨论】:

      • 我必须在MyTwitterApiClient 内部定义接口并使其成为public 才能工作
      • Thnx 老兄。我正在为它冲浪。! :)
      • new Callback() 中的用户应该是什么?应该是 twitter4j.User 还是别的什么?
      • com.twitter.sdk.android.core.models.User
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-04
      • 2015-05-07
      相关资源
      最近更新 更多