2017-03-14 21 views
2

私はファブリックを使用してツイッターの統合を使用していますが、今問題は電子メールアドレス以外のユーザーの詳細をすべて取得できることです。以下の私のコードで、いずれかがその電子メールIDツイッターの統合を取得する方法

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(); 
       } 


      } 

     }); 
    } 

答えて

4

で私を助けることができるこれは私がユーザーのユーザーのメールをフェッチする方法である:

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<TwitterSession>を得た後、あなたはTwitterAuthClient.requestEmail()を呼び出す必要があります承認時に

アプリのユーザーのメールへのアクセスを有効にするには、Twitterサポートに連絡する必要があることに注意してください。これに関するエラーメッセージが表示されます。

+0

アプリのクラッシュそれは与える java.lang.RuntimeException:結果の配信失敗ResultInfo – chris

+0

twitterAuthClientとは何ですか? – chris

+0

'twitterAuthClient'は' TwitterAuthClient'です。私はあなたが既に最初の承認のために1つを使用していると思います。 stacktrace全体を投稿できますか?最初の行だけはあまり言わない。 –

3

ここではTwitterから詳細を取得するために私のコードです:Kotlinでそれをやってみたいという方のため

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()); 
       } 
      }); 



     } 
+0

非常に多くのエラーmを取得する – chris

+0

あなたはそれに応じてコードを変更する必要があります。そして、このリンクを見てください。https://docs.fabric.io/android/twitter/log-in-with-twitter.html –

+0

助けてくれてありがとう – chris

0

このような方法で試すことができます:

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) 
      } 

     }) 
関連する問題