在Capacitor中请求Google API时出现错误403



我正在使用Capacitor将Web应用程序转换为iOS格式。我正在使用axios向谷歌API发出请求,尽管我的请求在浏览器中运行良好,但在iOS版本上返回了错误403。

以下是从身份验证到进行第一个API调用的流程(我使用capacitor-google-auth用于iOS OAuth,然后将从中获得的访问令牌传递给Axios,用作HTTP请求的头(。

到目前为止,我使用了这些资源:https://github.com/CodetrixStudio/CapacitorGoogleAuth,https://developers.google.com/calendar/api/v3/reference/calendarList/list

我的GoogleAuth插件设置;电容器配置json";(我还将REVERSED_CLIENT_ID的URL方案添加到了我的info.plist文件中,正如CapacityorGoogleAuth的文档所描述的那样(:

"plugins": {
"GoogleAuth": {
"scopes": [
"https://www.googleapis.com/auth/calendar"
],
"clientId": <<my iOS Client ID>>
}
}

当用";js,";获取访问令牌(有效(:

import { GoogleAuth } from '@codetrix-studio/capacitor-google-auth'
const axios = require('axios')
const token = await GoogleAuth.signIn()
const response = await axios
.request({
method: 'GET',
url: 'https://www.googleapis.com/calendar/v3/users/me/calendarList',
headers: {
Authorization: `Bearer ${token.authentication.accessToken}`
},
params: {
key: <<My API Key>>
}
})
.catch(err => console.log(err))
console.log(response)

此时,它抛出以下错误:

{
"message": "Request failed with status code 403",
"name": "AxiosError",
"config": {
"transitional": {
"silentJSONParsing": true,
"forcedJSONParsing": true,
"clarifyTimeoutError": false
},
"transformRequest": [null],
"transformResponse": [null],
"timeout": 0,
"xsrfCookieName": "XSRF-TOKEN",
"xsrfHeaderName": "X-XSRF-TOKEN",
"maxContentLength": -1,
"maxBodyLength": -1,
"env": { "FormData": null },
"headers": {
"Accept": "application/json, text/plain, */*",
"Authorization": "Bearer <<My access token>>"
},
"method": "get",
"url": "https://www.googleapis.com/calendar/v3/users/me/calendarList",
"params": { "key": <<My Api key>> }
},
"code": "ERR_BAD_REQUEST",
"status": 403
}

为什么iOS会出现这种情况?证书在某种程度上有问题吗?谷歌API不允许来自电容器应用程序的HTTP请求吗?任何帮助都将不胜感激,因为我很为难。此代码在iOS环境之外可以完美工作。

因此,在稍微回顾了一下之后,我了解到电容器应用程序有HTTP限制。将我的请求客户端更改为使用Capacitor社区HTTP模块是可行的。

https://capacitorjs.com/docs/apis/http

相关内容

  • 没有找到相关文章

最新更新