Android应用程序的Twitter登录
有谁能告诉我从我的Android应用程序执行Open Auth for twitter登录的正确步骤吗?还有一件事,在没有从我的应用程序转到twitter登录页面的情况下,是否可以执行twitter帐户的登录验证 Idea正在使用twitter帐户登录我的android应用程序(身份验证) 我已经尝试过了,但它是gng到twitter网络视图进行身份验证,而没有在我的应用程序中键入用户名和密码Android应用程序的Twitter登录,android,login,oauth,twitter-oauth,Android,Login,Oauth,Twitter Oauth,有谁能告诉我从我的Android应用程序执行Open Auth for twitter登录的正确步骤吗?还有一件事,在没有从我的应用程序转到twitter登录页面的情况下,是否可以执行twitter帐户的登录验证 Idea正在使用twitter帐户登录我的android应用程序(身份验证) 我已经尝试过了,但它是gng到twitter网络视图进行身份验证,而没有在我的应用程序中键入用户名和密码 所以请帮帮我!提前谢谢 您必须使用Twitter OAuth对您的应用进行身份验证。 TwitterO
所以请帮帮我!提前谢谢 您必须使用
Twitter OAuth
对您的应用进行身份验证。TwitterOAuth的例子被描述为它帮助我在android应用程序中集成twitter 这是Android的官方Twitter工具包(Twitter SDK) 检查此链接 在布局中,添加带有以下代码的登录按钮:
<com.twitter.sdk.android.core.identity.TwitterLoginButton
android:id="@+id/login_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
在活动中
loginButton = (TwitterLoginButton) findViewById(R.id.login_button);
loginButton.setCallback(new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
// Do something with result, which provides a TwitterSession for making API calls
}
@Override
public void failure(TwitterException exception) {
// Do something on failure
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Pass the activity result to the login button.
loginButton.onActivityResult(requestCode, resultCode, data);
}
loginButton=(TwitterLoginButton)findViewById(R.id.login_按钮);
setCallback(newcallback()){
@凌驾
公开作废成功(结果){
//对result执行一些操作,它提供了一个用于进行API调用的TwitterSession
}
@凌驾
公共无效失败(TwitterException异常){
//失败时做点什么
}
});
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
//将活动结果传递给登录按钮。
onActivityResult(请求代码、结果代码、数据);
}
应用程序设置
Create App here https://developer.twitter.com/en/apps/create
Add Callback URLs to twittersdk:// (For Android SDK)
From App Details goto Keys and tokens and add in res/values/strings.xml
<string name="twitter_api_key">REPLACE_KEY</string>
<string name="twitter_api_secret">REPLACE_SECRET</string>
From App Details goto Permissions -> Edit
Access permission -> Read, write, and Direct Messages
Additional permissions -> Check to true (Request email address from users)
Save
dependencies {
implementation 'com.twitter.sdk.android:twitter:3.1.1'
//implementation 'com.twitter.sdk.android:twitter-core:3.1.1'
//implementation 'com.twitter.sdk.android:tweet-ui:3.1.1'
}
活动中
private TwitterAuthClient twitterAuthClient;
Custom Button Click
TwitterConfig config = new TwitterConfig.Builder(this)
.logger(new DefaultLogger(Log.DEBUG))
.twitterAuthConfig(new TwitterAuthConfig(getResources().getString(R.string.twitter_api_key), getResources().getString(R.string.twitter_api_secret)))
.debug(true)
.build();
Twitter.initialize(config);
twitterAuthClient = new TwitterAuthClient();
TwitterSession twitterSession = TwitterCore.getInstance().getSessionManager().getActiveSession();
if (twitterSession == null) {
twitterAuthClient.authorize(this, new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
TwitterSession twitterSession = result.data;
getTwitterData(twitterSession);
}
@Override
public void failure(TwitterException e) {
Log.e("Twitter", "Failed to authenticate user " + e.getMessage());
}
});
} else {
getTwitterData(twitterSession);
}
private void getTwitterData(final TwitterSession twitterSession) {
TwitterApiClient twitterApiClient = new TwitterApiClient(twitterSession);
final Call<User> getUserCall = twitterApiClient.getAccountService().verifyCredentials(true, false, true);
getUserCall.enqueue(new Callback<User>() {
@Override
public void success(Result<User> result) {
String socialId = "", firstName = "", lastName = "", gender = "", birthday = "", email = "", picture = "";
User user = result.data;
socialId = user.idStr;
email = user.email;
/*picture = user.profileImageUrlHttps.replace("_normal", "");
firstName = user.name;
lastName = user.screenName;*/
try {
firstName = user.name.split(" ")[0];
lastName = user.name.split(" ")[1];
} catch (Exception e) {
firstName = user.name;
lastName = "";
}
Log.e("Twitter", "SocialId: " + socialId + "\tFirstName: " + firstName + "\tLastName: " + lastName + "\tEmail: " + email);
}
@Override
public void failure(TwitterException exception) {
Log.e("Twitter", "Failed to get user data " + exception.getMessage());
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (twitterAuthClient != null) {
twitterAuthClient.onActivityResult(requestCode, resultCode, data);
}
}
私有TwitterAuthClient TwitterAuthClient;
自定义按钮单击
TwitterConfig=新建TwitterConfig.Builder(此)
.logger(新的DefaultLogger(Log.DEBUG))
.twitterAuthConfig(新twitterAuthConfig(getResources().getString(R.string.twitter\u api\u密钥),getResources().getString(R.string.twitter\u api\u密钥)))
.debug(true)
.build();
初始化(config);
twitterAuthClient=新建twitterAuthClient();
TwitterSession TwitterSession=TwitterCore.getInstance().getSessionManager().getActiveSession();
if(twitterSession==null){
twitterAuthClient.authorize(这是一个新的回调函数(){
@凌驾
公开作废成功(结果){
TwitterSession TwitterSession=result.data;
getTwitterData(推特会话);
}
@凌驾
公共无效失败(Twittere异常){
Log.e(“Twitter”,“无法验证用户”+e.getMessage());
}
});
}否则{
getTwitterData(推特会话);
}
私有void getTwitterData(最终TwitterSession TwitterSession){
TwitterApiClient TwitterApiClient=新TwitterApiClient(twitterSession);
最终调用getUserCall=twitterApiClient.getAccountService().verifyCredentials(真、假、真);
getUserCall.enqueue(新回调(){
@凌驾
公开作废成功(结果){
字符串socialId=“”,firstName=“”,lastName=“”,gender=“”,birth=“”,email=“”,picture=“”;
User=result.data;
socialId=user.idStr;
email=user.email;
/*picture=user.profileImageUrlHttps.replace(“_normal”,”);
firstName=user.name;
lastName=user.screenName*/
试一试{
firstName=user.name.split(“”[0];
lastName=user.name.split(“”[1];
}捕获(例外e){
firstName=user.name;
lastName=“”;
}
Log.e(“Twitter”、“SocialId:+SocialId+”\t域名:+firstName+”\t域名:+lastName+“\tEmail:+email”);
}
@凌驾
公共无效失败(TwitterException异常){
Log.e(“Twitter”,“获取用户数据失败”+异常.getMessage());
}
});
}
@凌驾
受保护的void onActivityResult(int-requestCode、int-resultCode、@Nullable-Intent-data){
super.onActivityResult(请求代码、结果代码、数据);
if(twitterAuthClient!=null){
onActivityResult(请求代码、结果代码、数据);
}
}
Hi,当安装并登录应用程序时,您是如何在不打开webview的情况下使用twitter登录的。请尝试在此处添加一些详细信息来解释答案,而不是将我指向某个URL。谢谢
dependencies {
implementation 'com.twitter.sdk.android:twitter:3.1.1'
//implementation 'com.twitter.sdk.android:twitter-core:3.1.1'
//implementation 'com.twitter.sdk.android:tweet-ui:3.1.1'
}
private TwitterAuthClient twitterAuthClient;
Custom Button Click
TwitterConfig config = new TwitterConfig.Builder(this)
.logger(new DefaultLogger(Log.DEBUG))
.twitterAuthConfig(new TwitterAuthConfig(getResources().getString(R.string.twitter_api_key), getResources().getString(R.string.twitter_api_secret)))
.debug(true)
.build();
Twitter.initialize(config);
twitterAuthClient = new TwitterAuthClient();
TwitterSession twitterSession = TwitterCore.getInstance().getSessionManager().getActiveSession();
if (twitterSession == null) {
twitterAuthClient.authorize(this, new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
TwitterSession twitterSession = result.data;
getTwitterData(twitterSession);
}
@Override
public void failure(TwitterException e) {
Log.e("Twitter", "Failed to authenticate user " + e.getMessage());
}
});
} else {
getTwitterData(twitterSession);
}
private void getTwitterData(final TwitterSession twitterSession) {
TwitterApiClient twitterApiClient = new TwitterApiClient(twitterSession);
final Call<User> getUserCall = twitterApiClient.getAccountService().verifyCredentials(true, false, true);
getUserCall.enqueue(new Callback<User>() {
@Override
public void success(Result<User> result) {
String socialId = "", firstName = "", lastName = "", gender = "", birthday = "", email = "", picture = "";
User user = result.data;
socialId = user.idStr;
email = user.email;
/*picture = user.profileImageUrlHttps.replace("_normal", "");
firstName = user.name;
lastName = user.screenName;*/
try {
firstName = user.name.split(" ")[0];
lastName = user.name.split(" ")[1];
} catch (Exception e) {
firstName = user.name;
lastName = "";
}
Log.e("Twitter", "SocialId: " + socialId + "\tFirstName: " + firstName + "\tLastName: " + lastName + "\tEmail: " + email);
}
@Override
public void failure(TwitterException exception) {
Log.e("Twitter", "Failed to get user data " + exception.getMessage());
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (twitterAuthClient != null) {
twitterAuthClient.onActivityResult(requestCode, resultCode, data);
}
}