android - Android 应用程序的 Twitter 登录

标签 android authentication oauth twitter-oauth

谁能告诉我从我的 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/

相关文章:

android - phonegap 1.7 notificationCallback(此函数 this.sendJavascript(js))不起作用

java - 查看具有 2 种可能布局的绑定(bind),将绑定(bind)变量分配给 2 个生成的绑定(bind)类

ios - 使用 Apple ID 登录

php - 雅虎应用程序身份验证 Laravel

javascript - 如何使用服务帐户和 Google Drive API 解决 403 错误

android - Android中如何获取正在运行的应用程序的内容?

android - 我可以找出需要在屏幕上显示的字符串的 dp 或 px 大小吗?

php - 在 php.ini 文件中保存 MySQL 用户名/密码安全吗?

html - 将带有表单和错误检查的 'login.php' 页面转换为下拉登录

ios - 我的 iOS 应用程序和 API 之间的合理安全级别是多少