获得授权令牌后:
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)
使用。