我有一个网络应用程序,用户可以sign in with Google。在登录过程中,我添加了一个能够访问GoogleCalendar的范围。现在用户已经登录,我想在服务器端获取他们当前的Google访问令牌,以便发出请求并获取他们的事件列表。是否有一种方法可以获得当前的OAuth令牌(不需要刷新令牌),以便我完全在服务器端完成此操作?
sign in with Google
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(); } } });
6g8kf2rb2#
每当用户通过Google或第三方注册您的应用程序/网站时,Authorization Code,此授权码将交换为AccessToken和RefreshToken。通过Google发送的AccessToken通常有效期为60分钟。
Authorization Code
AccessToken
RefreshToken
让我们把它分成两部分:
你可以使用firebase和gapi来实现,你会得到AccessToken,它可以被发送回服务器添加到日历中。有关实施的更多信息
firebase和gapi的most方法在内部处理AuthorizationCode流,他们甚至在60分钟后刷新AccessToken,这对大多数开发者来说是有益的,因为他们不会为管理所有令牌而头疼。但是这个方法对开发者隐藏了RefreshToken和AuthorizationCode。也就是说即使你的服务器有访问令牌,它也不能刷新它,它将被认为是无用的。要实现完全离线访问,在获取AuthorizationCode的初始请求中,您需要将HTTPGET参数access_type发送到offlineGAPI为您提供了grantOfflineAccess()方法,该方法返回AuthorizationCode,稍后可在您的服务器上用于获取访问令牌和刷新令牌。注意:如果你在数据库中存储AuthorizationCode,请确保它是安全的。Firebase中的限制是出于安全原因而设置的。通常不与AuthorizationCode对话会更安全。更多链接
AuthorizationCode
access_type
offline
2条答案
按热度按时间xdnvmnnf1#
我想说的是,你可以检查这个article,并把特别注意的网站推荐。
我知道您已经配置了同意屏幕,这是使用OAuth 2.0基本步骤的第一步。因此,我知道您只需执行以下步骤:
1.从Google授权服务器获取访问令牌
1.检查用户授予的访问权限范围。
1.将访问令牌发送到API
我认为您还可以看看其他doc,以获得有关使用用户令牌授权请求的目标的更多GCP见解
已编辑:关于Firebase身份验证,我知道这发生在用户的设备上,您可以使用一些代码来检索令牌,然后将其发送到后端服务器,如本文所述。
作为一个示例,这里有在Android中检索令牌的示例代码:
6g8kf2rb2#
OAuth 2.0简介
每当用户通过Google或第三方注册您的应用程序/网站时,
Authorization Code
,此授权码将交换为AccessToken
和RefreshToken
。通过Google发送的
AccessToken
通常有效期为60分钟。脱机访问(服务器端)
让我们把它分成两部分:
如果您需要在用户上次活动后60分钟内更新
你可以使用firebase和gapi来实现,你会得到
AccessToken
,它可以被发送回服务器添加到日历中。有关实施的更多信息
如果您需要在用户上次活动60分钟后更新
firebase和gapi的most方法在内部处理
AuthorizationCode
流,他们甚至在60分钟后刷新AccessToken
,这对大多数开发者来说是有益的,因为他们不会为管理所有令牌而头疼。但是这个方法对开发者隐藏了
RefreshToken
和AuthorizationCode
。也就是说即使你的服务器有访问令牌,它也不能刷新它,它将被认为是无用的。要实现完全离线访问,在获取
AuthorizationCode
的初始请求中,您需要将HTTPGET参数access_type
发送到offline
GAPI为您提供了grantOfflineAccess()方法,该方法返回
AuthorizationCode
,稍后可在您的服务器上用于获取访问令牌和刷新令牌。注意:如果你在数据库中存储
AuthorizationCode
,请确保它是安全的。Firebase中的限制是出于安全原因而设置的。通常不与AuthorizationCode对话会更安全。更多链接