gpt4 book ai didi

cordova - 如何刷新 google+ 身份验证 token 以进行 S3 访问

转载 作者:行者123 更新时间:2023-12-02 10:47:06 25 4
gpt4 key购买 nike

我有一个cordova应用程序正在使用cordova-plugin-googleplus允许用户使用其 google+ 帐户进行身份验证。该应用程序还允许用户访问 S3 存储桶,通过 aws sdk 上传照片。 。为了实现这一点,我们使用 AWS Cognito with federated identities ,效果非常好。

问题是 1 小时后没有 S3 事件,下次应用尝试上传时我开始收到此错误:

{
"__type": "NotAuthorizedException",
"message": "Invalid login token. Token expired: 1513206998 >= 1513197640"
}

基于我的 research ,问题是 google+ token 即将过期,需要刷新,但我无法理解如何做到这一点。请注意,这需要在用户不知情的情况下在后台完成。要求用户每小时重新进行身份验证是 Not Acceptable 。

这是登录代码:

window.plugins.googleplus.login(prams, obj => {
let authData = {
accessToken: obj.accessToken,
idToken: obj.idToken
};

localStorage.setItem('authData', authData);
});

然后我们就可以访问 S3 存储桶了:

let authData = localStorage.getItem('authData');

AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'my-cognito-identity-pool-id',
Logins: { 'accounts.google.com': authData.idToken };
});

AWS.config.region = 'us-west-2;

AWS.config.credentials.getPromise()
.then(() => {
let s3 = new AWS.S3();

let params = {
Bucket: 'my-bucket',
Key: 'my-key',
Body: imageBytes,
ContentType: 'image/jpeg'
};

s3.upload(params);
});

我的理解是,我需要查找上面列出的错误,并在发生错误时刷新 google+ token ,但我不确定这是如何完成的。我在 cordova-plugin-googleplus 库中没有看到对此的支持。我必须自己发出http请求吗?这是如何运作的?想必我需要在登录后保存刷新 token 并以某种方式使用它。

最佳答案

根据this :

You need to take the oauth token and exchange it for the correct tokens (refresh/ access) on login

[...]

When a user needs their token refreshed (after 60 minutes) you must refresh it for them. Aka when you request a google api service and it sends you back a "token is invalid", you must eat the error and refresh the token and try the original request again.

如果使用 oauth2/v4 端点时您的 token 仍然无效,您可能必须使用 oauth2/v1 端点:

https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=...

您也可以查看google documentation你还可以找到一个 php 示例 here .

关于cordova - 如何刷新 google+ 身份验证 token 以进行 S3 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48215059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com