当前位置: 首页 > 知识库问答 >
问题:

Google Sheet API的身份验证范围不足错误iOS

白浩荡
2023-03-14

我正在尝试使用iOS版的Google Sheets API获取Google Sheet。我已经成功添加了用户身份验证,因为它不再要求API密钥,但我现在收到403错误,原因是:

Request had insufficient authentication scopes*.

我在Google Developers Console中添加了以下范围。

/auth/drive
/auth/spreadsheets

下面是我用来生成和执行查询的代码。

let potentialShowSheetID = "1n4wvD2vSSiAnG_pnD9rWR6dNCSnZz0pAGAiSYRaJCKs"
let service = GTLRSheetsService()
private let scopes = [kGTLRAuthScopeSheetsSpreadsheets]  // This was specified in 
    // another Stack Overflow question, but I'm not sure how it would be used
    // and it doesn't seem to help.

override func viewDidLoad() {
    super.viewDidLoad()

    service.authorizer = GIDSignIn.sharedInstance().currentUser.authentication.fetcherAuthorizer()

    let query = GTLRSheetsQuery_SpreadsheetsGet.query(withSpreadsheetId: potentialShowSheetID)

    service.executeQuery(query) { (ticket, data, error) in
        print("GTLRService ticket: \(ticket)")
        if error != nil {
            print("GTLRService potential show query error: \(error!)")
        }
        else {
            print("data: \(data ?? "unknown data")")

        }
    }
}

是否有办法使用Google Sheets API for iOS指定查询范围?我很好地浏览了这个框架,它似乎从来没有把它作为一个参数。也许我错过了别的东西。

更新:我检查了用户的授予范围,它不包括Drive或Sheets API。

print("Scopes:", GIDSignIn.sharedInstance()?.currentUser.grantedScopes ?? "unknown scopes")

    // Prints -> Scopes: [https://www.googleapis.com/auth/userinfo.profile, https://www.googleapis.com/auth/userinfo.email]

如何指定在身份验证期间授予访问权限的范围?

共有1个答案

壤驷承
2023-03-14

在对Google Sign-In API标头进行了一些挖掘之后,我发现我只需使用以下内容指定范围:

GIDSignIn.sharedInstance()?.scopes = [kGTLRAuthScopeSheetsSpreadsheets, kGTLRAuthScopeCalendar]

。。。在使用GIDSignInButton登录之前。

 类似资料:
  • 我第一次尝试使用Google Firestore,通过Google api身份验证进行身份验证。我要做的第一件事是用几个方法来填充数据库,当我等待批处理任务时,会出现以下错误: 我几乎找不到谷歌认证连接firestore的方法。首先,我使用google console为我的应用程序提供的密码使用此方法进行身份验证: 使用在我的google控制台中为应用程序配置的相同作用域(我在同一应用程序中使用g

  • null 所用程序: 获取身份验证响应后创建Google analytics service对象。/li> 脚本: null

  • 我正在尝试使用Gmail API阅读电子邮件,但我面临权限不足的问题。 注意:我已将范围设置为阅读电子邮件。 ManiFestFile。xml 我创建了GoogleSignInOptions来动态获取emailAddress或User。 当用户从GSOGogleSigninoOptions对话框中选择GoogleAccount时,调用了someActivityResultLauncher。 要获取

  • 我正在尝试使用api访问我的google analytics帐户中的用户。但是我越来越 “错误:{“代码”:403,“消息”:“请求的身份验证范围不足。”,“错误”:[{“消息”:“权限不足”,“域”:“全局”,“原因”:“权限不足”}],“状态”:“权限被拒绝”}此错误。这是我的php代码。 我如何解决这个问题?

  • 我试图获取Youtube评论,但它抛出了这个异常 - {“Google.api.Requests.RequestError\r\n权限不足:请求的身份验证作用域不足。[403]\r\nErrors[\r\n\tMessage[权限不足:申请的身份验证范围不足。]位置[-]原因:[UnficificientPermissions]域[全局]\r\r\m\n”} 凭证源代码- 这是它抛出异常的行- v

  • 这是我为Google Sheets API编写的代码。我有这是我找到的解决此问题的方法,但这并不能解决我的问题。我已经删除了我的.Credentials文件夹,它不提示我登录。