能否在Google Identity Services授权码流中继续使用gapi?
在Google Identity Services授权码流中继续使用gapi的可行方案
授权码流场景下,GIS不会自动同步令牌到gapi,但有两种实用方式可以继续使用gapi,避开gapi.client.setToken的弃用提示:
方法一:直接赋值gapi内部令牌对象
虽然gapi.client.setToken被标记为弃用,但可以直接操作gapi.client的令牌属性来绕过检查,效果和旧方法一致:
// 从后端获取的有效令牌数据 const tokenData = { access_token: 'YOUR_ACCESS_TOKEN', expires_in: 3600, token_type: 'Bearer' }; // 直接更新gapi的令牌存储 gapi.client.token = tokenData;
方法二:使用gapi.auth.setToken(推荐)
gapi.auth模块下的setToken并未被弃用,用它设置令牌能触发gapi内部的更新逻辑,更符合官方设计规范:
gapi.load('client:auth2', () => { const tokenData = { access_token: 'YOUR_ACCESS_TOKEN', expires_in: 3600, token_type: 'Bearer' }; // 用auth模块的方法设置令牌 gapi.auth.setToken(tokenData); // 初始化gapi客户端并调用API(以Drive为例) gapi.client.init({ apiKey: 'YOUR_API_KEY', discoveryDocs: ['https://www.googleapis.com/discovery/v1/apis/drive/v3/rest'] }).then(() => { return gapi.client.drive.files.list({ pageSize: 10, fields: 'nextPageToken, files(id, name)' }); }).then(response => { const files = response.result.files; // 处理文件数据 }); });
关键注意点
- 令牌过期后,需从后端获取新的access_token,重复上述步骤更新
- 确保后端已实现刷新令牌的逻辑,能按需返回有效access_token
- 授权码流请求时要包含所有后续API调用需要的scope
内容的提问来源于stack exchange,提问作者Devz
相关产品推荐
相关产品推荐

