Firebase管理员-获取Google OAuth令牌

ql3eal8s  于 2022-12-30  发布在  Go
关注(0)|答案(2)|浏览(148)

我有一个网络应用程序,用户可以sign in with Google
在登录过程中,我添加了一个能够访问GoogleCalendar的范围。
现在用户已经登录,我想在服务器端获取他们当前的Google访问令牌,以便发出请求并获取他们的事件列表。
是否有一种方法可以获得当前的OAuth令牌(不需要刷新令牌),以便我完全在服务器端完成此操作?

xdnvmnnf

xdnvmnnf1#

我想说的是,你可以检查这个article,并把特别注意的网站推荐。
我知道您已经配置了同意屏幕,这是使用OAuth 2.0基本步骤的第一步。因此,我知道您只需执行以下步骤:
1.从Google授权服务器获取访问令牌
1.检查用户授予的访问权限范围。
1.将访问令牌发送到API
我认为您还可以看看其他doc,以获得有关使用用户令牌授权请求的目标的更多GCP见解

已编辑:关于Firebase身份验证,我知道这发生在用户的设备上,您可以使用一些代码来检索令牌,然后将其发送到后端服务器,如本文所述。

作为一个示例,这里有在Android中检索令牌的示例代码:

FirebaseUser mUser = FirebaseAuth.getInstance().getCurrentUser();
mUser.getIdToken(true)
    .addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {
        public void onComplete(@NonNull Task<GetTokenResult> task) {
            if (task.isSuccessful()) {
                String idToken = task.getResult().getToken();
                // Send token to your backend via HTTPS
                // ...
            } else {
                // Handle error -> task.getException();
            }
        }
    });
6g8kf2rb

6g8kf2rb2#

OAuth 2.0简介

每当用户通过Google或第三方注册您的应用程序/网站时,Authorization Code,此授权码将交换为AccessTokenRefreshToken
通过Google发送的AccessToken通常有效期为60分钟。

脱机访问(服务器端)

让我们把它分成两部分:

如果您需要在用户上次活动后60分钟内更新

你可以使用firebase和gapi来实现,你会得到AccessToken,它可以被发送回服务器添加到日历中。
有关实施的更多信息

如果您需要在用户上次活动60分钟后更新

firebase和gapi的most方法在内部处理AuthorizationCode流,他们甚至在60分钟后刷新AccessToken,这对大多数开发者来说是有益的,因为他们不会为管理所有令牌而头疼。
但是这个方法对开发者隐藏了RefreshTokenAuthorizationCode。也就是说即使你的服务器有访问令牌,它也不能刷新它,它将被认为是无用的。
要实现完全离线访问,在获取AuthorizationCode的初始请求中,您需要将HTTPGET参数access_type发送到offline
GAPI为您提供了grantOfflineAccess()方法,该方法返回AuthorizationCode,稍后可在您的服务器上用于获取访问令牌和刷新令牌。
注意:如果你在数据库中存储AuthorizationCode,请确保它是安全的。Firebase中的限制是出于安全原因而设置的。通常不与AuthorizationCode对话会更安全。
更多链接

相关问题