Android 应用程序的 Twitter 登录

2024-03-12

谁能告诉我从我的 Android 应用程序执行 Twitter 登录开放身份验证的正确步骤?还有一件事是可以在没有 gng 的情况下从我的应用程序执行 Twitter 帐户的登录身份验证到 Twitter 登录页面吗?

想法是使用 Twitter 帐户登录我的 Android APP(身份验证)?

我已经尝试过,但它是 gng 到 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'
}

活动中

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);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 应用程序的 Twitter 登录 的相关文章

  • Android ToggleButton 始终检查

    如果切换按钮处于选中或取消选中状态 我想存储在 SharedPreferences 中 toggle setOnCheckedChangeListener new OnCheckedChangeListener public void on
  • 为什么不能在 Fragment 中使用 ViewPager?它实际上是

    有信息无法使用ViewPager在一个Fragment在许多来源中 例如 Android 开发者繁忙编码指南 http commonsware com 作者 Mark Murphy 或者类似的帖子this https stackoverfl
  • Cordova - 启动后出现白屏,控制台中没有例外

    我已经离开我的 Cordova 应用程序一段时间了 但昨天刚刚进行了一次新的克隆 发现它出现了 死机白屏 症状 启动画面显示 程序加载 然后我就得到一个空白屏幕 更多细节 CLI 科尔多瓦 6 1 1 安卓 5 1 1 ios 4 1 1
  • 虚拟回调接口

    在 Eclipse 为您创建的来自 Google 的示例主从流代码中 片段中包含以下内容 private Callbacks mCallbacks sDummyCallbacks public interface Callbacks pub
  • 嵌套 XML 布局文件

    android 有没有办法从另一个布局文件引用 xml 布局文件 为了更好地解释 我有一个名为layout1 xml 和layout2 xml 的布局文件 我可以从layout1 xml引用layout2 xml吗 用这个
  • 如何在不使用 Firebase 控制台的情况下发送 Firebase 云消息通知?

    我从新的 Google 通知服务开始 Firebase Cloud Messaging 感谢这段代码https github com firebase quickstart android tree master messaging htt
  • 自动删除 Firebase 通知

    我有一个问题 我都读过让通知在 5 分钟后消失 https stackoverflow com questions 15648699 make notification disappear after 5 minutes and 几秒钟后清
  • 如何绘制部分位图圆弧?类似于圆形进度轮,但具有显示得越来越多的位图。

    我正在寻找的是一种以顺时针圆形方式显示图像的视图 当进度为 25 时 应显示前 90 度 当进度为 100 时 应绘制完整的 360 度 它与使用 canvas drawArc 非常接近 但此方法仅适用于 Paint 对象 不适用于位图 其
  • Toast 消息消失后​​完成活动吗?

    有谁知道 是否有可能对 Toast 消息执行某些操作 在我的情况下完成活动 将被关闭 您只需创建一个Thread持续时间只要Toast显示 然后您就可以完成您的Activity public void onCreate Bundle sav
  • Android 认为我没有关闭数据库!为什么?

    我有一个 SQLiteDatabase 数据成员 我在 onCreate 中初始化它 并在 onPause onStop 和 onDestroy 中调用 close 它在 onResume 中重新初始化 它似乎运行得很好 但当我查看调试器时
  • 如何在同一设备上运行的 Android 应用程序之间传输文件?

    我正在编写一个与 RESTful 服务交互的 Android 应用程序 该 Web 服务本质上是一个文件系统 并提供元数据以及对文件的 CRUD 访问 我的应用程序检索元数据 并通过ContentProvider 我需要添加与我的应用程序在
  • 我在 android studio 中使用 kotlin 时出现错误

    为什么会出现这个错误 09 12 16 36 31 502 1886 1886 com getloction nourmedhat smartgate getlocation E AndroidRuntime 致命异常 main 进程 co
  • 使用 Proguard 通过 Dropbox.com 库混淆 Android 应用程序

    我刚刚创建了一个需要 Dropbox com API 库的 Android 应用程序 我现在尝试在 发布 模式下构建应用程序 并希望在代码上运行混淆器以对其进行混淆 但是 每当我尝试运行 Proguard 时 都会收到以下错误 Progua
  • Android - 存储对ApplicationContext的引用

    我有一个静态 Preferences 类 其中包含一些应用程序首选项和类似的内容 可以在那里存储对 ApplicationContext 的引用吗 我需要该引用 以便我可以在不继承 Activity 的类中获取缓存文件夹和类似内容 你使用的
  • 文本视图不显示全文

    我正在使用 TableLayout 和 TableRow 创建一个简单的布局 其中包含两个 TextView 这是代码的一部分
  • 使 Recyclerview 固定高度并可滚动

    已解决以下检查答案 所以我试图为我的 Android 应用程序创建评论功能 我想在 recyclerview 中显示评论 然后在 recyclerview 下方有一个按钮和文本视图来添加评论 我想让 recyclerview 具有一定的高度
  • 用于请求带有临时缓存的远程 Observable 的 RxJava 模式

    用例是这样的 我想暂时缓存最新发出的昂贵的Observable响应 但在它过期后 返回到昂贵的源Observable并再次缓存它 等等 一个非常基本的网络缓存场景 但我真的很难让它工作 private Observable
  • TabLayout 的不同 tabMode

    我正在使用 ViewPager 和 TabLayout 如果选项卡可以放置在显示 tabMode 上 则它们必须是 app tabMode fixed else app tabMode scrollable 我怎样才能做到这一点 我不明白你
  • Android 从通知刷新 Activity

    我有一个程序 我在其中调用通知 如果您将其下拉 该通知将启动一个新活动 mNotificationManager NotificationManager getSystemService ns int icon R drawable sta
  • 如何从DataSource.Factory获取数据

    我必须调用此方法才能获取所有人员 我根本无法修改这个方法 Query SELECT FROM PERSON TABLE ORDER BY NAME DESC abstract fun getElements DataSource Facto

随机推荐

  • 如何根据特定键获取 MongoDB 中的最大值和最小值?

    我想获得 emp 的最大值和最小值salary基于currency 每个员工的薪资范围基于currency此外 响应中的所有详细信息都应该是唯一的 虽然我使用聚合函数 min 和 max 但它获取工资金额的最大值和最小值 但我需要根据cur
  • JSDoc - 如何记录原型方法

    我一直在尝试使用 JSDoc 记录以下代码 module person A human being class param string name function Person name this name name Person pro
  • 我不明白以下指针变量声明在 c 中的含义

    char p 15 char p int a int pt char int pt char 有人帮忙吗 基本规则 从标识符开始 可以时右读 必须时左读 从标识符 开始 说出来 然后是 是 将您的 左脚 放在其左侧一个字符 Read rig
  • 从 Visual Studio Team Services 部署到本地 IIS - VPN 连接

    最近 我们开始在线使用 Visual Studio Team Services VSTS 作为源代码控制和 DevOps 持续集成 我们开始构建 VisualStudio com 我们需要远程构建才能将包 IIS 站点 部署到我们的本地服务
  • Eclipse 每次创建项目来运行单个文件?

    我是一个使用 eclipse CDT 的初学者 通常在 DEVc 或其他轻量级 IDE 中 我们可以直接从桌面打开和编辑单个 cpp 文件并运行它 另一方面 我在 eclipse CDT 中找不到这个简单的功能 每次我需要运行一个 cpp
  • 如何在executeCommands()中查找VSCode命令的参数

    我想写一个 vscode 扩展并使用vscode commands executeCommands 但我不知道我要使用的命令采用哪些参数 例如 当我想使用 actions find 命令 如何找出该特定 API 接受哪些参数 我认为没有综合
  • CSS:视图高度 (vh) 和视图宽度 (vw) 单位是否得到广泛支持?

    我使用 100vh 将 div 与行高垂直居中 这个网站 http caniuse com viewport unitsvh 和 vw 的支持率约为 70 这是一个公平的评估吗 您会建议在构建网站时使用视口单位吗 我知道这有点主观 我只是在
  • 使用没有组织或文件夹的服务帐户创建 GCP 和 Firebase 项目

    我需要使用 Google Cloud Platform GCP 服务帐户通过资源管理器 REST API 以编程方式创建项目 我想以无头方式创建 Firebase 项目 我们当前的解决方案涉及模仿用户和浏览器来实现此目的 因为在没有组织 或
  • HMAC 解决方案中的密钥使用什么(最佳/良好实践)?

    我正在根据另一家公司提供给我的规范实施类似 HMAC 的解决方案 散列参数和密钥的使用不是问题 密钥本身的分发也不是问题 因为我们联系密切且地理位置接近 但是 实际密钥的最佳实践是什么value 由于两家公司正在合作 看起来 c9ac56d
  • 在 Android 谷歌地图 v2 上保存标记

    我正在使用 Android Google 地图 v2 API 并将其设置为在长按时添加标记 我需要一种方法来保存这些标记并在应用程序再次恢复时重新加载它们 做到这一点的最佳方法是什么 请帮忙 目前我添加标记如下 map addMarker
  • 在shared_ptr的自定义删除器中检查nullptr是否有意义?

    我见过一些使用的代码std shared ptr使用自定义删除器来测试 nullptr 的参数 例如 MyClass其中有一个close 方法并用一些构造CreateMyClass auto pMyClass std shared ptr
  • 如何用背景颜色填充整个div

    我试图获取背景颜色来填充 bootstrap 中子 div 中的整个 div 但我完全陷入困境 我希望右侧部分为黄色 但它仅突出显示 div 中的文本 这是一个fiddle https jsfiddle net hcgriggs yjcrc
  • 如何在不创建 new Form() 的情况下从 Form2 访问 Form1 函数;

    我是 C 新手 正如我现在面临的问题 public void snz btn Click object sender EventArgs e this Close beside than this Form1 fs new Form1 fs
  • 如何在Python中生成唯一ID? [复制]

    这个问题在这里已经有答案了 我需要根据随机值生成一个唯一的 ID Perhaps uuid uuid4 可能会完成这项工作 看uuid http docs python org library uuid html了解更多信息
  • 如何将来自其他分叉的未合并的上游拉取请求应用到我的分叉中?

    我在 GitHub 上有一个分叉的项目有一个新的拉取请求 我想将其拉入我的分叉中 但作者尚未拉入 有没有一种简单的方法可以将其他分叉的拉取请求应用到我的分叉中 我还缺少其他东西吗 更新 通过网页 您还可以通过 github 网页执行此操作
  • Python Pandas:根据时间范围删除时间序列的行

    我有以下时间序列 start pd to datetime 2016 1 1 end pd to datetime 2016 1 15 rng pd date range start end freq 2h df pd DataFrame
  • 单一职责和混合

    鉴于Mixins http en wikipedia org wiki Mixin通常会在类中引入新的行为 这通常意味着一个类将具有多个行为 如果一个类具有单一职责 则这被定义为该类只有一个变更原因 所以 我可以从两个不同的角度来看待这个问
  • ASP.NET Core 3.1 MVC 中的本地化

    我正在尝试将本地化添加到我的 ASP NET Core 3 1 MVC 项目中 遗憾的是我找不到任何文章或教程来展示如何以简单的方式完成此操作 每个人都有一些我无法理解的问题 谁能告诉我一个简单的方法来做到这一点 好的 我尝试执行syncf
  • document.referrer 是否等于 HTTP Referer 标头?

    如果我点击正常链接http google com http google com to http example com http example com 通常我的浏览器发送到 example com 的 httpreferrer 标头是
  • Android 应用程序的 Twitter 登录

    谁能告诉我从我的 Android 应用程序执行 Twitter 登录开放身份验证的正确步骤 还有一件事是可以在没有 gng 的情况下从我的应用程序执行 Twitter 帐户的登录身份验证到 Twitter 登录页面吗 想法是使用 Twitt