Gab*_*lle 5 google-api google-oauth google-api-js-client google-picker google-signin
由于此处描述的已知问题 ( https://developers.google.com/identity/sign-in/web/troubleshooting ),我想更新我的应用程序以使用新的 gsi 登录,该登录使用的 cookie 少于以前的版本,因此可能有上述错误的解决方案......
我的问题是,几乎没有关于如何将 google picker 与新 gsi 集成的文档。
我曾经用于gapi一些与选择器相关的代码,例如加载库gapi.load('picker', () => {})。迁移文档表示要用apis.google.com/js/api.js新的 gsi url 替换 ,并且许多其他方法(例如googleAuth.signIn或 )gapi.client.init现在将在 2023 年被弃用。但是:
gapi可用的情况下加载选择器?或者gapi仍然需要导入但不会包含任何登录相关的方法?GoogleAuth.isSignedIn仅说明“删除。用户当前在 Google 上的登录状态不可用。用户必须登录 Google 才能获得同意和登录时刻。” 那有什么意思?我需要检查用户是否已登录,以便每次他们想从 gPicker 上传文件时不再显示弹出窗口...access_token的回调上有 a ,现在我们如何获取 token 呢?reloadAuthResponsesignIn抱歉这个问题令人困惑,我对一切都很困惑。任何输入都有帮助,谢谢!
小智 3
我通过以下方式遇到了https://developers.google.com/identity/oauth2/web/guides/use-token-model:How to use scoped APIs with (GSI) Google Identity Services
我更改了代码来加载此脚本:https://accounts.google.com/gsi/client,然后修改了我们的“授权”函数(见下文)以使用window.google.accounts.oauth2.initTokenClient而不是window.gapi.auth2.authorize获取access_token.
请注意,回调已从window.gapi.auth2.authorize函数的第二个参数移至callback函数第一个参数的属性window.google.accounts.oauth2.initTokenClient。
调用后tokenClient.requestAccessToken()(见下文),传递给的回调window.gapi.auth2.authorize将使用包含access_token.
const authorize = () =>
- new Promise(res => window.gapi.auth2.authorize({
- client_id: GOOGLE_CLIENT_ID,
- scope: GOOGLE_DRIVE_SCOPE
- }, res));
+ new Promise(res => {
+ const tokenClient = window.google.accounts.oauth2.initTokenClient({
+ client_id: GOOGLE_CLIENT_ID,
+ scope: GOOGLE_DRIVE_SCOPE,
+ callback: res,
+ });
+ tokenClient.requestAccessToken();
+ });
Run Code Online (Sandbox Code Playgroud)
使用的方式access_token没有改变:
new window.google.picker.PickerBuilder().setOAuthToken(access_token)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
906 次 |
| 最近记录: |