为什么 Google+ 登录完成登录时出错?

2024-03-01

我最近一直在处理 Android 上的 Google+ 登录问题,有一件事一直困扰着我。

在他们所有官方认可的示例中,没有一个方法专门显示登录过程。每次尝试让某人登录时调用的方法称为resolveSignInError(),如下所示:

private void resolveSignInError() {
    if (mConnectionResult.hasResolution()) {
        try {
            mIntentInProgress = true;
            mConnectionResult.startResolutionForResult(this, RC_SIGN_IN);
            Log.d("mGoogleApiClient ", mGoogleApiClient.toString());

        } catch (IntentSender.SendIntentException e) {
            mIntentInProgress = false;
            mGoogleApiClient.connect();
        }
    }
}

该方法还依赖于有一个mConnectionResult,它是在onconnectionfailure方法中设置的

public void onConnectionFailed(ConnectionResult result) {
    if (!result.hasResolution()) {
        GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), this,
                0).show();
        return;
    }

    if (!mIntentInProgress) {
        // Store the ConnectionResult for later usage
        mConnectionResult = result;

        if (mSignInClicked) {
            // The user has already clicked 'sign-in' so we attempt to
            // resolve all
            // errors until the user is signed in, or they cancel.
            resolveSignInError();
        }
    }
} 

因此,整个计划都是围绕着至少一次登录失败展开的。 有谁知道为什么没有一种方法可以直接登录 google plus? 为什么这作为构建可读软件的一种方式有意义?


原因是设备无法知道您是否确实需要登录 - 登录实际上更像是访问某个设施(就像您可能访问位置一样),而不是输入用户名和密码。基本流程是:

  1. 连接Google Play服务,查看该应用是否已获得授权。
  2. 如果有,则连接成功。
  3. 如果不是,则连接失败。

如果您随后想要登录,请执行连接结果解析。

微妙的是,即使用户以前从未在设备上使用过该应用程序,您也可以转到步骤 2!例如,如果我访问您的网站并在那里登录,然后安装您的 Android 应用程序。

  1. 应用程序启动,并检索您的用户帐户列表(通过 GET_ACCOUNTS 权限)
  2. 它尝试使用任何帐户连接到 Google Play 服务
  3. Google Play 服务调用 Google 身份验证服务器,发现您已经登录到该应用程序(在本例中是在网络上)
  4. 应用程序获取 onConnected 回调

因此,没有登录方法的原因是登录状态实际上是远程的 - 它位于 Google 服务器上,而不是设备本身。因此,流程必须是异步的。

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

为什么 Google+ 登录完成登录时出错? 的相关文章

  • Android-如何将 android.net.Uri 对象转换为 java.net.URI 对象?

    我正在尝试获得一个FileInputStream用户从图片库中选择的图像上的对象 这是安卓URI由返回android provider MediaStore Images Media INTERNAL CONTENT URI content
  • 如何替换 Android 中已弃用的 Bundle/Argument get(key) 调用

    我有以下扩展函数 允许我在应用程序活动和片段之间传递捆绑数据项 inline fun
  • Android 中的 Fragment-Fragment 通信

    我在Android编程方面处于初级水平 所以我需要你真诚的帮助 请任何人帮助我 我正在尝试使用片段构建滑动用户界面 所以我真正的疑问是 我有一个Fragment say FragmentA 它有一个TextView and Button在其
  • 使用 Fragment 在工具栏中实现 SearchView

    当前情况 我的应用程序主页由导航抽屉组成 因此我将视图作为片段加载 我的工具栏中也有搜索图标 我在中实现了它menu xml 下一步我实施了SearchView通过以下问题的答案来获取搜索图标在工具栏中实现搜索 https stackove
  • 吉夫伦致命信号11

    我正在尝试使用一些本机代码来创建 Gif 我使用绘画绘制图像 创建一些笔画 单击 保存 绘制的图像将保存为 JPG 格式 当我单击 创建 Gif 时 它会获取所有图像并开始创建 gif 这是当我收到致命信号 11 并且应用程序重新启动时 我
  • Android 中的列表(特别是 RecyclerView 和 CardView)如何工作

    请原谅我问这个问题 但我是 Android 开发新手 尽管我正在尝试了解developer android com 网站上的基础知识 但大多数示例 即使他们说它们是为 Android Studio 构建的 尚未设置为使用 Gradle 因此
  • Android 全屏对话框确认和拒绝操作

    材料设计中的全屏对话框应该在操作栏 工具栏上有确认和拒绝操作 我的问题是 我该怎么做 显示对话框 getFragmentManager beginTransaction add R id container new MyDialogFrag
  • 需要 Android webview window.open() 和 window.close() 的信息

    我正在开发一个安卓应用程序 这是我网站的 WebView 该网站包含一个弹出按钮 单击该按钮后 将打开一个新窗口并显示内容 该链接可以来自外部站点 然而 当我实现此操作时 新选项卡正在打开 之后它会弹出以打开浏览器 尽管在 Web 视图中打
  • Ionic 2 RC0 和 Angular 2 最新的 Android 构建错误(ngc:错误:静态解析符号值时遇到错误)

    当我使用构建android时出现错误ionic build android命令 ngc 错误 静态解析符号值时遇到错误 引用本地 非导出 符号 字典 考虑导出符号 原始 ts文件中的位置14 8 解析符号TRANSLATION PROVID
  • HMS 核心地图套件在我的 Android 应用程序上根本无法工作

    我正在尝试在我的应用程序中使用华为 HMS 地图套件 我对整体地图很陌生 无论是来自谷歌还是华为 我按照文档中的教程以及华为提供的代码实验室中的说明进行操作 并将我的代码在一起 但是当我运行地图活动时 什么也没有出现 我得到的只是一个空白活
  • 如何禁用操作栏上“向上”按钮的翻转?

    背景 我做了一个 应用程序管理器 https play google com store apps details id com lb app manager 替代应用程序 我希望添加 RTL 从右到左 语言的翻译 因为我知道在某些 And
  • Android蓝牙java.io.IOException:bt套接字已关闭,读取返回:-1

    我正在尝试编写一个代码 仅连接到运行 Android 5 0 KitKat 的设备上的 目前 唯一配对的设备 无论我尝试了多少方法 我仍然会收到此错误 这是我尝试过的最后一个代码 它似乎完成了我看到人们报告为成功的所有事情 有人能指出我做错
  • 是否可以通过 Android 应用程序来录音?

    我是一名开发人员 希望创建一个 Android 应用程序来记录电话 这是出于我个人的需要 为了我自己的目的和记录而记录电话 是否有可能做到这一点 是否可以访问麦克风以及通过扬声器发出的声音 我对 Android 开发有点陌生 所以请耐心等待
  • 在android中,将相机预览流到视图上

    我想将 Android 相机的相机预览流式传输到视图上 目的是随后使用 onDraw 将各种内容添加到视图中 我不需要随时实际捕捉图像 它不必是最高质量或每秒最大数量的帧 有谁知道如何做到这一点 将其添加到您的 xml 中
  • 当 minifyEnabled 为 true 时 Android 应用程序崩溃

    我正在使用多模块应用程序 并且该应用程序崩溃时minifyEnabled true in the installed模块的build gradle 以下是从游戏控制台检索到的反混淆堆栈跟踪 FATAL EXCEPTION Controlle
  • 无法使用 findViewById() 找到视图

    我找不到TextView通过致电findViewById 即使 ID 确实存在 OtherActivity public class OtherActivity extends Activity Override protected voi
  • Unity c# 四元数:将 y 轴与 z 轴交换

    我需要旋转一个对象以相对于现实世界进行精确旋转 因此调用Input gyro attitude返回表示设备位置的四元数 另一方面 这迫使我根据这个四元数作为默认旋转来计算每个旋转 将某些对象设置为朝上的简单方法如下 Vector3 up I
  • Android-dispatchTouchEvent 给了我一个 StackOverflowError

    这里我有一个带有 setOnTouchListener 的 ViewFlipper 它工作得很好 然后我膨胀 ReLayNewsItem 然后将其添加到 ViewFlipper 现在我希望 WebView web 监听触摸事件并将它们传递给
  • 丢失应用程序的密钥库文件(但已启用 Google Play 应用程序签名)

    我已经失去了原来的keystore用于签署我的应用程序的文件 我的应用启用了 Google Play 应用签名 如果我联系 Google 支持人员 是否可以重置密钥 以便我可以继续上传到此包 我希望我可以做到这一点 因为应用程序签名已启用
  • 将对象从手机共享到 Android Wear

    我创建了一个应用程序 在此应用程序中 您拥有包含 2 个字符串 姓名和年龄 和一个位图 头像 的对象 所有内容都保存到 sqlite 数据库中 现在我希望可以在我的智能手表上访问这些对象 所以我想实现的是你可以去启动 启动应用程序并向左和向

随机推荐

  • 实现 OrientationEventListener 来帮助没有 CameraInfo 的相机问题?

    我需要实施一个OrientationEventListener以使相机正常工作 谷歌发布了一个示例实现onOrientationChanged看起来像这样 Override public void onOrientationChanged
  • 为什么 Fn 派生自 FnMut(FnMut 派生自 FnOnce)?

    如果您查看Rust 官方文档 https doc rust lang org std ops trait Fn html 你看到这个特质Fn源自FnMut 或者 实施Fn 你必须实施FnMut 在那之后FnOnce since FnMut也
  • iOS 音频单元会切断高于某个频率的声音

    我在接收声音 UDP WiFi 时遇到一些问题 我想尽可能清除它 所以一开始我想切断高于某个频率的声音 显然 我从套接字获取了原始数据 然后将其复制到输出缓冲区 我确信应该在那里进行精确的切断 你能建议我吗 我当前的回调代码 static
  • java中的kadane算法

    我在 java 中有以下 Kadane 算法的实现 基本上是找到连续子数组的最大和 String numbers string split int max so far 0 int max ending here 0 for int i 0
  • selenium 是否可以使用 xpath 通过“for”属性找到标签元素?

    selenium 是否可以使用 xpath 通过 for 属性找到标签元素 我正在测试一个连续有 7 个是或否问题的网站 CSS 的完成方式是单击标签而不是输入单选按钮 通常我只是通过文本内容查找元素 但每个问题都有一个 是 和 否 我认为
  • Cassandra - 从集群中删除节点

    我有一个包含三个节点的集群 我需要删除一个节点 在实际删除之前 如何确保要删除的节点中的数据将复制到其他两个节点 这是使用快照完成的吗 我应该如何进行 来自doc http cassandra apache org doc latest o
  • 带有刷新令牌的 JSON Web 令牌身份验证逻辑

    Angular 4 应用程序在浏览器 网站后端 中运行 显示特定用户拥有的服务器数据 服务器 PHP MySQL Zend Framework 3 Doctrine ORM Naming access token 生命周期短 1 分钟 允许
  • 如何在Excel中设置默认的特殊粘贴以仅粘贴值[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的 Excel 中的一个单元格用作用户输入框 如果用户在此单元格中粘贴某些内容 我只想粘贴值而不是格式 有没有办法将粘贴选项的默认值设置
  • Laravel 5.2 模型 $fillable 被忽略?

    我有一个简单的模型IsolatedQuery其中包括一个name and query场地 我已经在中定义了这两个字段 fillable模型的属性 isolatedQueryController store 看起来像这样 public fun
  • 如何在自定义 python-sphinx 指令/扩展中使用现有指令?

    我想创建一个自定义的Directive使用现有指令 code block在这个例子中 在它的实现中 reStructuredText 中的手动等效项是 mydirective py code block py print Hello wor
  • Powershell 中非常大的 XML 文件

    对于非常大的文本文件 我们可以选择使用 StreamReader 和 StreamWriter 然后允许逐行查找 替换 但是 我有一个 XML 文件 需要在其中进行查找 替换并进行更多控制 例如查找 替换特定节点中的值 该节点是具有特定属性
  • Git - 如何自动将目录中的更改推送到另一个分支

    完成问题重写 所以我以为我正在非常简单和直接地解释这个问题 但似乎我过于简单化了 所以这里是所有额外的细节 希望这可以帮助每个人看到这也不是重复的 我有一个存储库 项目 我想在其中自动化将提交从一个分支中的一个目录推送到另一个分支的过程 我
  • 使用“:”(冒号)按属性选择元素

    在我的项目中 有一个库生成元素的情况 我需要从那里选择特定的元素 它恰好包含带有 的属性 换句话说 我最终尝试选择使用 document querySelectorAll xml space 但是 在 Chrome 中测试时 它不起作用 也
  • 无法在 Xcode 10 中查找屏幕比例和意外的物理屏幕方向

    我最近将 Xcode 更新到版本 10 现在我的控制台显示 MyApp 1618 133310 AXMediaCommon Unable to look up screen scale MyApp 1618 133310 AXMediaCo
  • 点击 pageControl 滚动到另一个视图(点击点)

    我已经设置了具有 2 个视图的 PageViewControll 我可以在视图之间移动 并且 pageControl 点 对应于正确的页面 但是点击点还不能滚动到正确的视图 我在这里找到了一些关于如何创建该函数的答案 但无法成功实现以使其工
  • 带有自定义操作的 installshield

    我正在使用 installshield 2012 prime 创建一个基本的 msi 项目 我有两个问题 1 MSI 在创建要安装的应用程序的文件夹和文件后需要运行自定义 exe 只需在安装应用程序时执行一次此操作 2 MSI 还需要告诉正
  • iOS MobileVLCKit 存档问题

    在尝试归档我的项目时 我得到了这个error ld bitcode bundle could not be generated because Users MobileVLCKit MobileVLCKit framework Mobile
  • 如何将 Apigility 与现有 ZF2 应用程序结合使用?

    我有一个带有一些模块的 ZF2 应用程序 我希望允许在我的应用程序中使用具有 Apigility 的现有模块 我尝试使用 Composer 安装这些模块 require php gt 5 3 3 phpoffice phpexcel mon
  • 为映射和/或嵌套对象自定义 Spring @RequestParam 反序列化

    RestController class MyController RequestMapping public void test Container container Spring 默认使用 Dot Notation 来反序列化嵌套的
  • 为什么 Google+ 登录完成登录时出错?

    我最近一直在处理 Android 上的 Google 登录问题 有一件事一直困扰着我 在他们所有官方认可的示例中 没有一个方法专门显示登录过程 每次尝试让某人登录时调用的方法称为resolveSignInError 如下所示 private