获取一个用户';来自Twitter的s电子邮件地址(Android)

获取一个用户';来自Twitter的s电子邮件地址(Android),android,twitter,twitter4j,Android,Twitter,Twitter4j,如何通过twitter API获取用户的电子邮件地址?我正在使用Twitter4j登录twitter我希望这能奏效 请在您的请求回拨结果中使用以下代码 TwitterloginButton.setCallback(new Callback<TwitterSession>() { @Override public void success(Result<TwitterSession> result) {

如何通过twitter API获取用户的电子邮件地址?我正在使用Twitter4j登录twitter

我希望这能奏效 请在您的请求回拨结果中使用以下代码

 TwitterloginButton.setCallback(new Callback<TwitterSession>() {
            @Override
            public void success(Result<TwitterSession> result) {
                session = result.data;

                AccountService ac = Twitter.getApiClient(result.data).getAccountService();
                ac.verifyCredentials(true, true, new Callback<User>() {
                    @Override
                    public void success(Result<com.twitter.sdk.android.core.models.User> result) {

                        String imageUrl = result.data.profileImageUrl;
                        String email = result.data.email;
                        String Name = result.data.name;
                        long userid = result.data.id;
                        String username = result.data.screenName;

                        System.out.println(imageUrl);
                        System.out.println("EMAIL:" + email);
                        System.out.println("Name:" + Name);
                        System.out.println("ID:" + userid);
                        System.out.println("Username:" + username);
                    }

                    @Override
                    public void failure(TwitterException e) {

                    }
                });
TwitterloginButton.setCallback(新回调(){
@凌驾
公开作废成功(结果){
session=result.data;
AccountService ac=Twitter.getApiClient(result.data).getAccountService();
ac.verifyCredentials(真、真、新回调(){
@凌驾
公开作废成功(结果){
字符串imageUrl=result.data.profileImageUrl;
字符串email=result.data.email;
字符串名称=result.data.Name;
long userid=result.data.id;
字符串用户名=result.data.screenName;
System.out.println(imageUrl);
System.out.println(“EMAIL:+EMAIL”);
System.out.println(“名称:”+Name);
System.out.println(“ID:+userid”);
System.out.println(“用户名:”+用户名);
}
@凌驾
公共无效失败(Twittere异常){
}
});
检查这些链接

成功登录后写下下面的代码

TwitterAuthClient authClient = new TwitterAuthClient();
authClient.requestEmail(session, new Callback<String>() {
   @Override
    public void success(Result<String> result) {
    // Do something with the result, which provides the email address
}

@Override
public void failure(TwitterException exception) {
  // Do something on failure
}
});
TwitterAuthClient authClient=new TwitterAuthClient();
authClient.requestEmail(会话,新回调(){
@凌驾
公开作废成功(结果){
//对结果执行一些操作,结果将提供电子邮件地址
}
@凌驾
公共无效失败(TwitterException异常){
//失败时做点什么
}
});

首先,确保在您的twitter应用程序
权限
部分激活了
向用户请求电子邮件地址


然后按照Twitter文档步骤进行操作

1.:它只导入twitter的sdk包

我只使用核心包

编译'com.twitter.sdk.android:twitter核心:3.1.1'
在活动
onCreate
方法上初始化Twitter工具包

Twitter.initialize(这个);
将应用程序id和密码添加到
strings.xml
文件

xxxxxxxxxx
XXXXXXXXXX

2.


提示:您只需使用自定义按钮即可
private TwitterLoginButton twitterBtn;

twitterBtn=(TwitterLoginButton)findViewById(R.id.twitter\u connect);
setCallback(新的Callback(){
@凌驾
公开作废成功(结果){
//对result执行一些操作,它提供了一个用于进行API调用的TwitterSession
//那就是从twitter上回拨来获取电子邮件
TwitterSession session=TwitterCore.getInstance().getSessionManager().getActiveSession();
TwitterAuthToken authToken=session.getAuthToken();
字符串令牌=authToken.token;
String secret=authToken.secret;
TwitterAuthClient authClient=新TwitterAuthClient();
authClient.requestEmail(会话,新回调(){
@凌驾
公开作废成功(结果){
//对结果执行一些操作,结果将提供电子邮件地址
//电子邮件保存在结果变量“result.data”中
Toast.makeText(getBaseContext(),“Email”+result.data,Toast.LENGTH\u LONG.show();
}
@凌驾
公共无效失败(TwitterException异常){
//失败时做点什么
}
});
}
@凌驾
公共无效失败(TwitterException异常){
//失败时做点什么
}
});
接下来,将身份验证活动的结果传递回按钮:

//将活动结果传递给登录按钮。
twitterBtn.onActivityResult(请求代码、结果代码、数据);
像这样:

@覆盖
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
//将活动结果传递给登录按钮。
twitterBtn.onActivityResult(请求代码、结果代码、数据);
}

在这里,Twitter sdk帮助您提供电子邮件,您只需要提供请求电子邮件的权限。Twitter sdk将检查您的Twitter帐户上电子邮件的可见性,如果它有权限,它将向您提供电子邮件,否则如果它不发送电子邮件,我们需要处理

client.requestEmail(twitterSession, new Callback<String>() {
        @Override
        public void success(Result<String> result) {
            Log.d(TAG, "Twitter success email : " + result.data);
            email = result.data;
            if (email == null){

            }else {
            Log.d(TAG,"Email"+ email);  
            }

        }

        @Override
        public void failure(TwitterException exception) {
            Log.d(TAG, "Twitter failed  email : " + exception);
        }
    });
client.requestEmail(twitterSession,新回调(){
@凌驾
公开作废成功(结果){
Log.d(标签“Twitter成功邮件:”+result.data);
email=result.data;
如果(电子邮件==null){
}否则{
日志d(标记“电子邮件”+电子邮件);
}
}
@凌驾
公共无效失败(TwitterException异常){
Log.d(标记“Twitter失败电子邮件:+异常”);
}
});

获取Twitter电子邮件和个人资料图像URL、用户名、id,您可以调用requestEmail方法。

    btnTwitterLogin.setCallback(new Callback<TwitterSession>() {
        @Override
        public void success(Result<TwitterSession> result) {
            TwitterSession session = TwitterCore.getInstance().getSessionManager().getActiveSession();
            TwitterAuthToken authToken = session.getAuthToken();
            TwitterAuthClient authClient = new TwitterAuthClient();
            authClient.requestEmail(session, new Callback<String>() {
                @Override
                public void success(Result<String> result) {
                    String email =result.data;
                    String token = authToken.token;
                    String secret = authToken.secret;
                    String username = session.getUserName();
                    long userId = session.getUserId();
                    Log.e("neem", "success: \n Token =>  " + token + "\n Secret: " + secret + " \n Username: " + username + "\n Userid: " + userId+" \n Email: "+email);

                }

                @Override
                public void failure(TwitterException exception) {
                    Log.e("neem", "failure: "+exception.getMessage() );
                }
            });
            TwitterCore.getInstance().getApiClient(result.data).getAccountService().verifyCredentials(false,true,false).enqueue(new Callback<User>() {
                @Override
                public void success(Result<User> userResult) {
                    try {

                        String imageUrl = userResult.data.profileImageUrl;
                        String username = userResult.data.screenName;
                        Log.e("neem", "acount services: imageurl: "+imageUrl+"\n username: "+username );

                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                @Override
                public void failure(TwitterException e) {
                }
            });

        }

        @Override
        public void failure(TwitterException exception) {
            ShowToast(mcontext, "Login failed due to: \n "+exception.getMessage());
        }
    });
您还可以允许在您的twitter开发者帐户中发送请求电子邮件。请参见下面的图片

使用以下代码获取用户详细信息。

    btnTwitterLogin.setCallback(new Callback<TwitterSession>() {
        @Override
        public void success(Result<TwitterSession> result) {
            TwitterSession session = TwitterCore.getInstance().getSessionManager().getActiveSession();
            TwitterAuthToken authToken = session.getAuthToken();
            TwitterAuthClient authClient = new TwitterAuthClient();
            authClient.requestEmail(session, new Callback<String>() {
                @Override
                public void success(Result<String> result) {
                    String email =result.data;
                    String token = authToken.token;
                    String secret = authToken.secret;
                    String username = session.getUserName();
                    long userId = session.getUserId();
                    Log.e("neem", "success: \n Token =>  " + token + "\n Secret: " + secret + " \n Username: " + username + "\n Userid: " + userId+" \n Email: "+email);

                }

                @Override
                public void failure(TwitterException exception) {
                    Log.e("neem", "failure: "+exception.getMessage() );
                }
            });
            TwitterCore.getInstance().getApiClient(result.data).getAccountService().verifyCredentials(false,true,false).enqueue(new Callback<User>() {
                @Override
                public void success(Result<User> userResult) {
                    try {

                        String imageUrl = userResult.data.profileImageUrl;
                        String username = userResult.data.screenName;
                        Log.e("neem", "acount services: imageurl: "+imageUrl+"\n username: "+username );

                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                @Override
                public void failure(TwitterException e) {
                }
            });

        }

        @Override
        public void failure(TwitterException exception) {
            ShowToast(mcontext, "Login failed due to: \n "+exception.getMessage());
        }
    });
btnTwitterLogin.setCallback(新回调(){
@凌驾
公开作废成功(结果){
TwitterSession session=TwitterCore.getInstance().getSessionManager().getActiveSession();
TwitterAuthToken authToken=session.getAuthToken();
TwitterAuthClient authClient=新TwitterAuthClient();
authClient.requestEmail