gpt4 book ai didi

android - Android 应用程序的 Twitter 登录

转载 作者:行者123 更新时间:2023-12-04 00:09:13 24 4
gpt4 key购买 nike

谁能告诉我从我的 Android 应用程序执行 Open Auth for twitter login 的正确步骤?还有一件事是可以在我的 APP 中对 Twitter 登录页面执行 twitter 帐户的登录身份验证而不用 gng 吗?

Idea 正在使用 twitter 帐户登录我的 android APP(身份验证)?

我已经尝试过了,但它在我的应用程序中无需输入用户名和密码就可以通过 twitter webview 进行身份验证?

所以请帮助我!提前谢谢!!

最佳答案

应用设置

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

在 AndroidManifest.xml 中添加 INTERNET 权限

<uses-permission android:name="android.permission.INTERNET" />

将 twitter SDK 依赖添加到 build.gradle (Module:app)

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

Activity 中

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

关于android - Android 应用程序的 Twitter 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12091872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com