获取一个用户';来自Twitter的s电子邮件地址(Android)
如何通过twitter API获取用户的电子邮件地址?我正在使用Twitter4j登录twitter我希望这能奏效 请在您的请求回拨结果中使用以下代码获取一个用户';来自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) {
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