问题标签 [google-authentication]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
18061 浏览

android - 使用 OAuth2 对应用*和*网站进行身份验证

我正在开发一个主要通过应用程序访问的网站,并且我想使用 OAuth2 进行用户注册和身份验证。由于它是一个 Android 应用程序,我将开始使用 Google 的 OAuth2 东西,因为它在 Android 上提供了不错的 UI。

谷歌声明“你可以选择使用谷歌的身份验证系统来为你的应用程序外包用户身份验证。这可以消除创建、维护和保护用户名和密码存储的需要。” 这就是我想要做的。但是,当我浏览他们的所有示例等等时,我只能找到有关让网站应用程序根据 Google 的服务对用户进行身份验证的内容。

事实上,当我使用 Google 的 OAuth2 注册我的应用程序(“客户端”)时,可以选择网站客户端和“已安装”客户端(即移动应用程序),但不能同时使用两者。我可以创建两个单独的客户端,但我阅读了 OAuth2 草案,我认为会有一个问题,我现在将对此进行解释。

以下是我设想它的工作方式:

OAuth2流程图

  1. 用户要求 MyApp 访问他的私人数据。
  2. 应用程序使用 Android 的AccountManager类来为 Google 的 API 请求访问令牌。
  3. Android 对用户说“应用程序‘MyApp’想要访问您在 Google 上的基本信息。可以吗?”
  4. 用户说是。
  5. AccountManager使用存储在手机上的凭据连接到 Google 的 OAuth2 服务器,并要求提供访问令牌。
  6. 返回访问令牌(跟随绿线)。
  7. AccountManager将访问令牌返回给 MyApp。
  8. MyApp 向 MySite 发送请求以获取用户的私有数据,包括访问令牌。
  9. MySite 需要使用访问令牌验证用户。它使用 Google 验证此处描述的令牌- “Google,此令牌有效吗?”。
  10. 现在,我想要发生的是谷歌说“是的,给你的人确实是那个用户。”,但我认为实际会发生的事情(基于 OAuth2 草案和谷歌的文档)是它会说“不方式!该令牌仅对 MyApp 有效,而您是 MySite。GTFO!”。

那么我该怎么做呢?请不要说“使用 OpenID”或“不要使用 OAuth2”或其他类似无益的答案。哦,我真的很想继续使用漂亮的AccountManagerUI 而不是蹩脚WebView的popup

编辑

来自 Nikolay 的临时答案(如果它有效,我会报告!)是它应该真正有效,而且 Google 的服务器不会关心访问令牌来自哪里。对我来说似乎有点不安全,但我会看看它是否有效!

更新

我用 Facebook 而不是 Google 实现了这个模式,它完全有效。OAuth2 服务器不关心访问令牌的来源。至少 Facebook 没有,所以我认为 Google 也没有。

鉴于此,存储访问令牌是一个非常非常糟糕的主意!但是我们也不想访问 Facebook/Google 的服务器来检查每个请求的身份验证,因为它会减慢一切。最好的办法可能是为您的站点添加一个额外的身份验证 cookie,在验证访问令牌时分发该 cookie,但更简单的方法是将访问令牌视为密码并存储它的哈希值。你也不需要加盐,因为访问令牌真的很长。所以上面的步骤变成了这样:

9. MySite 需要使用访问令牌验证用户。首先,它检查其哈希有效访问令牌的缓存。如果在那里找到令牌的散列,则它知道用户已通过身份验证。否则,它会按照此处所述与 Google 进行检查,使用 Google -“Google,此令牌有效吗?”。

10. 如果 Google 说访问令牌无效,我们会告诉用户 GTFO。否则谷歌会说“是的,这是一个有效的用户”,然后我们检查我们的注册用户数据库。如果找不到该 Google 用户名(或 Facebook id,如果使用 Facebook),我们可以创建一个新用户。然后我们缓存访问令牌的哈希值。

0 投票
1 回答
268 浏览

openid - Google Identity ToolKit: createAuthUrl - Invalid Identifier

I'm working on implementing Google Identity Toolkit in my application. Due to the unique customer requirement (FISMA), App Engine is an unacceptable platform.

I'd like the most seamless single sign on process with Google possible. No buttons, no popups -- just a few redirects. I'm thinking that the createAuthUrl method of the API is a good place to start. However, I can't seem to get it to work. I must be doing something wrong, but I'm totally stuck.

I've included a gist of some code I've tossed together: https://gist.github.com/5bc9bfb03df34ca93cf3

0 投票
4 回答
2950 浏览

google-authentication - 取消对 Google 应用的授权

我正在尝试取消授权我之前允许使用我的 Google 信息的应用程序之一。

Twitter 和 Facebook 允许取消授权。您如何在 Google 中实现它?尝试查看设置,但无济于事。

0 投票
0 回答
735 浏览

oauth-2.0 - 有人在使用 Google Service Account 和 Google Play Api 吗?

我需要使用 Google Play api 服务。我尝试使用“服务帐户”身份验证方法获取授权令牌,但我总是得到“400 Bad request”作为响应和 json:“error”:“invalid_grant”。

有没有人使用这种授权方法,Google Play Api 作为范围,C# 作为编程语言?

我到处搜索以通过现有库或我自己按照本指南(https://developers.google.com/accounts/docs/OAuth2ServiceAccount#libraries)和其他用户的建议来实现它,但它不起作用

这是代码

以及此处指定的编码为 base 64 的方法:Utils.Base64Encode()

然后我在下面调用命令,我得到 {"error":"invalid_grant"}:

(为简洁起见减少了编码的 JWT)

0 投票
1 回答
1743 浏览

c# - Google Api 获取令牌请求返回 invalid_request

我正在尝试使用 c# 获取 Google APi 的 access_token,但总是收到错误消息 invalid_request。有我的代码:

我使用https://developers.google.com/accounts/docs/OAuth2WebServer#offline

0 投票
1 回答
727 浏览

windows-phone-7 - 如何获取授权码到我的 wp 应用程序以进行谷歌身份验证?

在我的 WP7.5 应用程序中,我已将用户重定向到谷歌网页,该网页被要求授予应用程序访问其帐户的权限,用户单击是,但它重定向到有代码的页面,并且用户应该将其复制/粘贴到我的应用程序中。

响应是请复制此代码,切换到您的应用程序并将其粘贴到那里:4/3oHAHtqSk1CqA3S8HlEsuQRaE08e.4nCBpXhR-R8WgrKXntQAax02U4CwcgI - Auth code

我想,当用户按确定时,使用该代码返回我的应用程序,有什么办法吗?

——谢赫阿卜杜拉

0 投票
1 回答
2044 浏览

google-analytics - 带有消息“经过身份验证后无法添加服务”的“Google_Exception”

我正在使用 Oauth 2.0 使用 Google Analytics 开发 WP 插件。

我所有的身份验证和数据提取都可以正常工作,除了这个问题:我第一次获得新的 Google 授权码(例如:“4/-xbSbg....”)并进行身份验证,然后尝试调用新的 Google_AnalyticsService() 对象,它会抛出错误:

带有消息“经过身份验证后无法添加服务”的“Google_Exception”

这是在第 109 行:http ://code.google.com/p/google-api-php-client/source/browse/trunk/src/apiClient.php?r=258

一旦我刷新调用此代码的页面,它就可以正常工作 - 即 check_login() 的第一个分支正常,但身份验证调用无法正常工作。

您会看到代码似乎在抱怨,因为我首先进行了身份验证,并且消息说我不应该这样做。评论和代码真的让我很困惑我的问题是什么(登录代码还不是很干净,我意识到)。

重要提示:我正在使用 Google Auth for Installed Apps,因此我们要求用户提供身份验证代码,并使用它来获取身份验证令牌。

get_option()、set_option() 和 update_option() 是不属于问题的 WP 本机函数

这是我的代码:

0 投票
1 回答
72 浏览

oauth - 升级授权码是确定性的吗?

我阅读了评论“// 升级代码后有时我们不会获得刷新令牌。” 在示例 DrEdit 代码https://code.google.com/p/google-drive-sdk-samples/source/browse/java/src/com/google/drive/samples/dredit/CredentialMediator.java第 292 行。

“有时”是什么意思?是否有文件描述了我将获得和不会获得刷新令牌的情况?

0 投票
1 回答
894 浏览

objective-c - Objective-C 中的 Google 客户端登录

我正在尝试在objective-c中为google客户端登录编写代码。我从“https://www.google.com/accounts/ClientLogin”获得带有电子邮件和密码的身份验证,并且我可以通过 POSTER (firefox) 成功登录谷歌。

当我为objective-c编写代码时,我无法登录并得到错误代码401。

有人可以帮我做错什么吗?这是我的代码。

0 投票
1 回答
1278 浏览

oauth-2.0 - 什么原因导致间歇性无效授权

我得到以下

这仅发生在我的生产 Appengine 实例中(即不在开发服务器上),并且仅发生在我用于测试开发和生产的电子邮件地址中。

我的工作假设是,这与用户在开发服务器上被授予刷新令牌有关,这会以某种方式干扰产品服务器上存储的刷新令牌。

任何人都可以确认这个解释,是否有关于如何处理这个异常的最佳实践?