【问题标题】:How to get email id twitter integration如何获取电子邮件 ID 推特集成
【发布时间】:2017-08-04 14:34:39
【问题描述】:

我正在使用fabric 使用twitter 集成,现在的问题是我能够获取除电子邮件地址之外的用户的所有详细信息。以下是我的代码,谁能帮帮我

public void login(Result<TwitterSession> result) {

        //Creating a twitter session with result's data
        TwitterSession session = result.data;

        //Getting the username from session
        final String username = session.getUserName();

        //This code will fetch the profile image URL
        //Getting the account service of the user logged in
        Call<User> userResult = Twitter.getApiClient(session).getAccountService().verifyCredentials(true, false);
        userResult.enqueue(new Callback<User>() {

            @Override
            public void failure(TwitterException e) {

            }

            @Override
            public void success(Result<User> userResult) {

                User user = userResult.data;
                String twitterImage = user.profileImageUrl;

                try {
                    Log.d("imageurl", user.profileImageUrl);
                    Log.d("name", user.name);
                    System.out.println("Twitter Email"+user.email);
                    //Log.d("email", user.email);
                    Log.d("des", user.description);
                    Log.d("followers ", String.valueOf(user.followersCount));
                    Log.d("createdAt", user.createdAt);
                } catch (Exception e) {
                    e.printStackTrace();
                }


            }

        });
    }

【问题讨论】:

    标签: android twitter twitter-fabric


    【解决方案1】:

    这就是我获取用户电子邮件的方式:

    final TwitterSession twitterSession = result.data;
    twitterAuthClient.requestEmail(twitterSession, new com.twitter.sdk.android.core.Callback<String>() {
        @Override
        public void success(Result<String> emailResult) {
            String email = emailResult.data;
            // ...
        }
    
        @Override
        public void failure(TwitterException e) {
            callback.onTwitterSignInFailed(e);
        }
    });
    

    因此,您必须在获得成功的Result&lt;TwitterSession&gt; 授权后致电TwitterAuthClient.requestEmail()

    请注意,您必须联系 Twitter 支持才能为您的应用启用对用户电子邮件的访问权限。将显示一条错误消息。

    【讨论】:

    • 应用程序崩溃它给出了 java.lang.RuntimeException: 传递结果 ResultInfo 失败
    • 什么是 twitterAuthClient??
    • twitterAuthClientTwitterAuthClient。我猜你已经使用了一个来进行初始授权。您可以发布整个堆栈跟踪吗?只有第一行没有说太多。
    • 它基本上说你的TwitterAuthClient是空的,所以你应该确保你已经实例化了它。
    • 既不是初学者也不是拖钓者..我用了你的答案..也在这里检查docs.fabric.io/android/twitter/log-in-with-twitter.html..已经发现我的错误..但后来粘贴了commet..哈哈
    【解决方案2】:

    可以向用户请求电子邮件地址,但这需要将您的应用列入白名单。 在这里查看Is there a way to get an user's email ID after verifying his/her Twitter identity using OAuth?

    【讨论】:

      【解决方案3】:

      这是我从 twitter 获取详细信息的代码:

         private void intializeTwitterUI() {
            loginButton = (TwitterLoginButton)             
            findViewById(R.id.twitter_login_button);
            loginButton.setCallback(new Callback<TwitterSession>() {
              @Override
              public void success(Result<TwitterSession> result) {
                  // The TwitterSession is also available through:
                  // TWITTER.getInstance().core.getSessionManager().getActiveSession()
                  TwitterSession session = result.data;
                  // TODO: Remove toast and use the TwitterSession's userID
                  // with your app's user model
                  String msg = "Twitter: @" + session.getUserName() + " logged in! (#" + session.getUserId() + ")";
                  Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();
                  /**
                   *
                   */
                  AccountService _AccountService = Twitter.getApiClient(result.data).getAccountService();
                  _AccountService.verifyCredentials(true, true).enqueue(new retrofit2.Callback<User>() {
                      @Override
                      public void onResponse(Call<User> call, retrofit2.Response<User> response) {
                          Log.d(TAG, "Twitter user is: " + response.toString());
                          Log.d(TAG, "Twitter-Email" + response.body().email);
                          Log.d(TAG, "Twitter-profileImage" + response.body().profileImageUrl);
                          Log.d(TAG, "Twitter-ID" + response.body().id);
                          twitterDetails = response.body().email + "," + response.body().profileImageUrl + "," + response.body().id;
      
                      }
      
                      @Override
                      public void onFailure(Call<User> call, Throwable t) {
                          Log.e(TAG, "verifyCredentials failed! " + t.getLocalizedMessage());
                      }
                  });
      
      
      
              }
      

      【讨论】:

      【解决方案4】:

      想要使用Kotlin的人可以试试这种方式:

          val session = TwitterCore.getInstance().sessionManager.activeSession as TwitterSession
          val authClient = TwitterAuthClient()
          authClient.requestEmail(session, object : Callback<String>(){
                  override fun failure(exception: TwitterException?) {
                      email.setText("Welcome to Twitter")
                  }
      
                  override fun success(result: Result<String>?) {
                      email.setText("Welcome " + result?.data)
                  }
      
              })
      

      【讨论】:

        猜你喜欢
        • 2017-04-30
        • 1970-01-01
        • 2021-03-04
        • 2017-04-30
        • 2016-02-29
        • 1970-01-01
        • 2015-03-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多