我正在尝试构建一个与Google云端硬盘集成并安装到其中的网络应用.用户将能够在其驱动器中创建和共享我的应用程序文件.我正在尝试使用Firebase编写它,以便我可以利用那里的许多出色的新功能.但是,我无法让auth在这两个平台上一致地工作.
这是一个仅限客户端的应用程序(至少目前为止),因此我无法使用脱机身份验证和刷新令牌.
在Firebase身份验证之前,我会使用带有gapi的Google Identity Toolkit.这通常工作正常,虽然它使用不适合移动设备的弹出流程.
gapi.signin2.render(elementId, {
longtitle: true,
width: 230,
height: 50,
theme: "dark"
});
var auth2 = gapi.auth2.init({
client_id: CLIENT_ID,
scope: SCOPES.join(" ")
});
auth2.isSignedIn.listen(signinChanged);
auth2.currentUser.listen(userChanged);
Run Code Online (Sandbox Code Playgroud)
Gapi有点笨拙,但它确实有效.该访问令牌可以通过调用来获得
gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse(true));
Run Code Online (Sandbox Code Playgroud)
像往常一样,访问令牌只持续大约一个小时然后到期.在重要的事情是,我们只需调用GoogleUser.reloadAuthResponse()得到刷新访问令牌.注意,这是刷新的访问令牌,而不是刷新令牌!
因此,从理论上讲,我可以使用该访问令牌来对Firebase进行身份验证,如此处所述,并且必须使用弹出流程,或者试图破解它.
尽管如此,Google表示Identity Toolkit正在被Firebase身份验证取代,新应用程序应该使用Firebase.
最新版本的Google Identity Toolkit已作为Firebase身份验证发布.它包括升级的客户端SDK,开源UI库,会话管理和用于忘记密码流的集成电子邮件发送服务.
新项目应使用Firebase身份验证.要将现有项目从Identity Toolkit迁移到Firebase身份验证,请参阅迁移指南.
Firebase有一个简单的API用于与Google进行身份验证.我可以在验证时获取并存储AccessToken.所以这似乎是我应该实现auth的方式,新的和改进的Firebase方式.此外,Firebase提供了一个很好的重定向流程,适用于移动设备.
但是,存在一个巨大的问题......
这将获得访问令牌.
firebase.auth().getRedirectResult().then(function(result) {
if (result.credential) {
// This gives you a Google Access Token. You can use it to access the Google API.
var …
Run Code Online (Sandbox Code Playgroud) google-authentication firebase google-drive-api google-identity-toolkit firebase-authentication
我正在尝试按照本指南使新的谷歌一键登录工作:
https://developers.google.com/identity/one-tap/web
google.accounts.id.initialize({
client_id: '123123123123123123.apps.googleusercontent.com',
cancel_on_tap_outside: false,
callback: handleCredentialResponse
});
//google.accounts.id.prompt(true);
google.accounts.id.prompt((notification) => {
if (notification.isNotDisplayed() || notification.isSkippedMoment()) {
// continue with another identity provider.
}
});
Run Code Online (Sandbox Code Playgroud)
我正在使用 One Tap JavaScript API 来显示 One Tap。它完美地完成了它需要做的事情。
客户端验证一切正常,但我有一个问题。通过单击窗口右上角的关闭按钮关闭 UI 后,UI 不再显示,当我检查通知状态时,它显示此错误;
选择退出或无会话
即使用户关闭了 UI,我需要做什么才能保持 UI 显示?我很感激任何帮助。
javascript asp.net-mvc google-authentication oauth-2.0 google-signin
gcloud auth print-access-token
当我们使用和时,访问令牌和身份令牌有什么区别gcloud auth print-identity-token
?
在什么情况下我们可以在 Google Cloud 上下文中使用其中一种而不使用另一种。
为什么我们有print-access-token
for gcloud auth
,而gcloud auth application-default
我们print-identity-token
只有forgcloud auth
authentication google-authentication google-cloud-platform gcloud
在API控制台中注册Android应用以进行Google API访问时,您必须输入应用SHA1证书指纹和应用的包名称.
现在我想知道当api调用只是简单的HTTP请求时,谷歌如何验证这些值是否正确(在最简单的情况下,当你不使用他们的API客户端时,可能附加一些标题值)?您在进行API调用时必须提供API密钥,但这并不能证明输入的值是正确的.
我遇到Android Firebase Auth使用com.google.gms:google-services:3.0.0
和的问题com.google.firebase:firebase-auth:9.0.1
.
使用Firebase(Google或Facebook)验证后1小时,我收到以下错误消息:
W/PersistentConnection: pc_0 - Authentication failed: expired_token (Auth token is expired)
为什么Firebase令牌在1小时后过期以及如何延长此有效期?
UPDATE
我仍然遇到此问题,Firebase令牌在1小时后过期.现在我收到以下消息:
W/PersistentConnection: pc_0 - Authentication failed: invalid_token (Invalid claim 'kid' in auth header.)
我感谢任何帮助.
android google-authentication facebook-authentication firebase-authentication
我无法验证我的 googlesheets 包。每次我运行gs_auth()
命令时,我都会被带到 chrome,我通常会在那里登录以启用包来访问我的 googlesheets:
但是,最近每次执行此操作时,Google 都会出现以下错误:
这是我的会话信息:
sessionInfo()
R version 3.6.1 (2019-07-05)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Debian GNU/Linux 9 (stretch)
Matrix products: default
BLAS/LAPACK: /usr/lib/libopenblasp-r0.2.19.so
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 LC_MONETARY=en_US.UTF-8
[6] LC_MESSAGES=C LC_PAPER=en_US.UTF-8 LC_NAME=C LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices datasets utils methods base
other attached packages:
[1] googlesheets_0.3.0
loaded via a namespace (and not attached):
[1] Rcpp_1.0.2 crayon_1.3.4 dplyr_0.8.3 withr_2.1.2 assertthat_0.2.1 cellranger_1.1.0 R6_2.4.0
[8] magrittr_1.5 httr_1.4.1 pillar_1.4.2 …
Run Code Online (Sandbox Code Playgroud) r google-authentication google-oauth google-signin tidyverse
当我使用运行任一命令时:
gcloud auth application-default login
OR 对于特定的 docker 容器
docker exec -it 822c4c491383 /home/astro/google-cloud-sdk/bin/gcloud auth application-default login
。
我的命令行会给我一个谷歌响应页面的链接,我可以在其中复制他们给我的代码并将其写入命令行中。
现在由于某种原因,每当我尝试执行任一命令时,我都会收到以下错误,说我无权访问网络浏览器。
您无需访问 Web 浏览器即可授权客户端库。请在带有 Web 浏览器的计算机上运行以下命令,并将其输出复制回此处。确保安装的 gcloud 版本为 372.0.0 或更高版本。
gcloud auth 应用程序默认登录 --remote-bootstrap="https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=764086051850-6qr4p6gpi6hn506pt8ejuq83di341hur.apps.googleusercontent.com&scope=openid+https%3A%2F %2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Faccounts.reauth&state=FmMFY6gvpOa9xndMXmWiNG3W1jDrCe&access_type =离线&code_challenge=zUI4n_pnYE5V7p0diDQLmL0X0Sk8XpTDzhz_vwtukOo&code_challenge_method=S256&token_usage=远程"
我尝试复制其中的链接并将其放入我的网络浏览器中,但我收到一个页面说。
错误 400:无效请求缺少必需参数:重定向 uri
编辑:虽然不确定为什么现在会发生这种情况,但我在两个命令的末尾添加了选项“--no-launch-browser”,它为我提供了现在手动放置在浏览器中并复制代码的链接。
google-authentication docker google-cloud-platform gcloud google-cloud-sdk
我有一个使用谷歌API(谷歌驱动器)的网络应用程序.许多客户端都使用该应用程序,每个客户端都有一个子域来访问系统.
所以该域名是appdomain.com
对于用户,我有foo.appdomain.com, bar.appdomain.com等.appdomain.com.
但在谷歌控制台重定向URI我必须手动放置重定向网址,有没有办法我可以使用通配符重定向使谷歌接受任何子域,如:*.appdomain.com?
有了这个,我可以使用redirect_uri中的用户子域进行谷歌授权调用:
https://accounts.google.com/o/oauth2/auth?redirect_uri=http://foo.appdomain.com
Run Code Online (Sandbox Code Playgroud) subdomain wildcard-subdomain google-api google-authentication oauth-2.0
我正在尝试将Android平台的移动应用程序验证为自定义node.js服务器api.我想使用Google OAuth2令牌而不是推出自己的身份验证,因为安装了Google Play的Android设备可以让应用开发者使用它.我正在使用此处GoogleAuthUtil.getToken
记录的Google Play服务库中的来电.我正在尝试遵循这个Android开发者博客帖子中提出的建议
getToken
在我的情况下,该方法返回一个长857字节的字符串.如果我尝试将此令牌传递给Google的TokenInfo端点,则会返回:
{'error':'invalid_token','error_description':'无效值'}
我在这做错了什么?在getToken调用的"范围"中,我发送:
audience:server:client_id:**i_put_my_clientid_here**
.我为"已安装的应用程序"生成了一个clientid.使用此客户端ID,对getToken的调用根本不起作用.当我为"服务帐户"生成客户端ID时,调用成功,但是如上所述,当传递给TokenInfo端点时,我得到一个857字节的令牌失败.
编辑:我还为"Web应用程序"创建了一个客户端ID,因为它似乎是在调用时使用的正确客户端ID getToken
.但行为是一样的,我得到一个857字节的令牌,在调用谷歌的终端时不会验证.
如何在Android上使用Google Play服务正确获取有效的身份验证令牌?一旦我有了正确的令牌,什么是正确的node.js库来验证服务器端?我可以使用passport-google-oauth吗?
例如,用户在WebView中导航到google.com.
是否可以通过Google帐户选择器(如https://developers.google.com/android/guides/http-auth中所述)在那里授权,以简化授权,而不是通过网络表单手动登录?Android Web浏览器(例如Google Chrome)通过此方法授权用户).
android ×4
gcloud ×2
google-api ×2
oauth-2.0 ×2
security ×2
asp.net-mvc ×1
docker ×1
firebase ×1
google-oauth ×1
java ×1
javascript ×1
node.js ×1
oauth ×1
r ×1
subdomain ×1
tidyverse ×1
webview ×1