谷歌身份服务:initCodeClient().requestCode()提示用户登录,即使令牌是有效的



获得授权令牌后:

const tokenClient = google.accounts.oauth2.initTokenClient({
client_id, scope, callback, 
});

// ...

tokenClient.requestAccessToken({ prompt: ''})

我需要获得授权码并将其发送到后端:

let code;
const codeClient = google.accounts.oauth2.initCodeClient({
scope, client_id, 
callback: codeResponse => code = codeResponse.code,
});
codeClient.requestCode();

尽管用户已经授权过一次,并且gapi.client.getToken()不是null,但弹出窗口将再次出现

有什么解决方案可以避免多余的用户授权吗?

很可能是因为用户同意获取令牌(initTokenClient(并不自动意味着同意获取授权码(initCodeClient(。您可以获得授权代码,并将其转换为后端的令牌,如果范围匹配,则该令牌可以在前端作为gapi.client.setToken(token)使用。

最新更新