如何获得电子邮件ID微博整合

我正在使用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(); } } }); } 

这是我如何获取用户的用户电子邮件:

 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支持,以便为您的应用程序启用对用户电子邮件的访问。 这将显示一个错误消息。

这里是我的代码来获取来自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()); } }); } 

可以向用户请求电子邮件地址,但需要将您的应用列入白名单。 在这里检查有没有办法在使用OAuth验证他/她的Twitter身份后获得用户的电子邮件ID?

对于那些想用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) } })