当前位置: 首页 > 知识库问答 >
问题:

从GAPI迁移到谷歌身份服务(GIS),服务器端的问题

孟翰海
2023-03-14

如何使用新系统 (GIS) 获取刷新的 ID 令牌?

我有一个web应用程序,它使用Google登录并向我的服务器发送id_token以使用一些GCP服务。我使用GAPI signin2/auth2的方式如下:

    < Li > < code > gapi . CLIENT . init(API _ KEY,OAUTH_CLIENT_ID,SCOPES),SCOPES只有userinfo.email和profile < Li > get current user by < code > gapi . auth 2 . getauthinstance(). current user . get()(如果用户未登录,则呈现登录按钮) < li >如果< code > currentuser . hasgrantedscopes(SCOPES): < ul > < li >然后< code > gapi . client . gettoken(),这将给我一个< code>{ id_token,access_token }

在我的NodeJS服务器上,我将使用来自google auth library的OAuth2Client:

>

  • 使用新的 OAuth2 客户端创建一个新的 OAuth2 客户端实例(OAUTH_CLIENT_ID)

    当客户端发送请求时,从凭据中提取id_token并调用:

    oauthClient.verifyIdToken({idToken: idToken,观众:OAUTH_CLIENT_ID,})

    在此结果上调用getPayload()将给我用户的Google ID,然后我可以使用该ID来存储由它键控的数据,等等。

    当服务器发现id_token已过期时,它将由于verifyIdToken()而出错。

    客户端将捕获令牌到期错误,并通过html" target="_blank">执行以下操作发出刷新:

    • authInstance.currentUser.get()。reloadAuthResponse()
    • 响应将具有新的凭据({id_token,access_town})
    • 客户端将使用新的cred向服务器重新发出请求

    ====

    好吧,现在谷歌已经表示他们不赞成signin2用于他们的新库(谷歌身份服务),并表示我们都应该迁移到它。

    我已经想出了如何进行客户端登录,并且它更容易,代码更少 - 太好了!

    这很简单:

    • 调用google.accounts.id.initialize({auto_select:true,client_id:client_ id,回调:creds=

    我想不通的是如何处理服务器端的事情。如何使用新系统(GIS)获得刷新的id令牌?迁移指南说应该删除reloadAuthResponse(),因为

    ID令牌已替换OAuth2访问令牌和作用域。

    但事实是,ID令牌仍然在某个时候过期,不是吗?

    我做错了什么?我应该如何迁移服务器代码以使用新的id_token来验证用户身份并提取它?我应该停止在服务器上使用OAuth2Client而使用其他库吗?

  • 共有1个答案

    丁立果
    2023-03-14

    迁移策略没有明确记录。

    请参阅此链接(查找 oauth2.0 endpoint实现),他们使用新的 Oauth2.0 实现 (GIS) 编写了一个示例应用程序

     类似资料:
    • /mychildfolder/default.asp,第9行 正如我刚才所说的,这段代码在Windows2003Server/IIS 6.0上运行良好。

    • GIS 服务器 开源服务器软件 GeoServer GeoServer 是一款自由开源的软件,遵循OGC Web服务器规范的J2EE实现,利用GeoServer可以方便地发布地图数据,允许用户对特征数据进行更新、删除、插入操作,通过 GeoServer 可以轻松的在用户之间迅速共享空间地理信息。GeoServer 具有以下特点: 兼容 WMS 和 WFS 特性; 支持PostGIS、Shapefi

    • 我已经通过Composer下载并安装了谷歌云存储PHP库,下载了JSON密钥文件,但我无法使用该库做任何事情。当我严格按照指示去做时,我只得到错误。不管怎样,这是我试图做任何事情的文件中的代码,比如列表桶文件,或者上传文件,等等...谁能告诉我我做错了什么?我真的很想在我的服务器上使用谷歌云存储来备份文件。 如果这有助于澄清,我正在使用DreamHost VPS作为我的服务器。它支持PHP7.0。

    • 下面是我的PHP代码,我用它来测试谷歌日历中的事件插入。 我原以为我可以只使用一个API键,但谷歌似乎有一种复杂的方式来实现OAUTH,我就是搞不懂。我可以在API开发者控制台中看到我的所有403错误。 是否有人拥有将简单事件插入我的日历的工作代码。 背景: 我将从paypal收到一个IPN(完成),这将触发这个脚本,它将在我的日历中插入一个事件,而不是用户。有谁能帮我而不让我参考谷歌开发者文档吗

    • 请让我知道我们是否可以将存储过程从Microsoft SQL server迁移到Microsoft Azure Cosmos DB?使用DocumentDB迁移工具或任何其他工具

    • 我正在调查AWS/Google云基础架构系统是否可以混合,我的要求之一是从一个系统到另一个系统的安全和简单的身份验证。目前,我需要从一个Google Cloud VM实例连接到一个受限的AWS S3 bucket。 我的问题通常是:有没有办法做到这一点,什么是最好的方法。我相信每个人都希望有机会使用多个云提供商为他们的基础设施提供高安全性、易用性和维护性。 经过一些研究,我发现唯一可能的方法是通过