【问题标题】:Firebase Authentication - Googlesheets "The request is missing a valid API key." Error 403Firebase 身份验证 - Googlesheets“请求缺少有效的 API 密钥。”错误 403
【发布时间】:2017-11-22 21:18:38
【问题描述】:

尝试将 Firebase 项目连接到 GoogleSheets 时出现错误

(lldb) po error
Error Domain=com.google.GTLRErrorObjectDomain Code=403 "The request is missing a valid API key." UserInfo={GTLRStructuredError=GTLRErrorObject 0x61000005c650: {errors:[1] message:"The request is missing a valid API key." code:403 status:"PERMISSION_DENIED"}, NSLocalizedDescription=The request is missing a valid API key.}

这是我的代码

let query = GTLRSheetsQuery_SpreadsheetsValuesGet
  .query(withSpreadsheetId: spreadsheetId, range:range)
service.executeQuery(query,
                     delegate: self,
                     didFinish: #selector(displayResultWithTicket(ticket:finishedWithObject:error:))

func displayResultWithTicket(ticket: GTLRServiceTicket,
                           finishedWithObject result : GTLRSheets_ValueRange,
                           error : NSError?) {

if let error = error {
  showAlert(title: "Error", message: error.localizedDescription)
  return
}

我看到一个类似的问题Invalid API Key supplied using Firebase

我在https://console.developers.google.com/ 启用了 Google Sheets API 并刷新了 GoogleService-Info.plist。从模拟器中删除应用程序,重置模拟器并将其添加回来。

但我仍然得到错误

我正在使用

  • GoogleAPIClientForREST (1.2.1)
  • FirebaseAuth (4.0.0)
  • GTMOAuth2 (1.1.4)
  • GTMSessionFetcher (1.1.10)

我正在使用范围 kGTLRAuthScopeSheetsSpreadsheetsReadonly

我在 api explorer 中执行没有问题

GET https://sheets.googleapis.com/v4/spreadsheets/1o0kCH8As6Zx5q-n8KykaQS053ZkXMzLlc6PWiVnHipw?ranges=A1%3AB2&key={YOUR_API_KEY}

我尝试重新生成我的 api 密钥并重新下载 google.plist

【问题讨论】:

  • Sheets api 要求您发送经过身份验证的请求,以防数据不公开,否则只需要 API 密钥。您确定您使用的库包含必要的 OAuth 信息吗?您能否在 Firebase 中正确进行身份验证?您可以在不使用 Firebase 的情况下使用该库吗?

标签: ios firebase google-sheets firebase-authentication google-sheets-api


【解决方案1】:

我解决了这个问题。

  1. 这与 Firebase 无关,是 GoogleAPIClientForREST 问题

  2. 我安装的是 GoogleAPIClientForREST (1.3.0) 而不是 1.2.1

  3. 我没有通过 GIDGoogleUserauthentication fetcherAuthorizer() 的 GTMFetcherAuthorizationProtocol 传递 service.authorizer

在 1.3.0 中,服务 no 不再有授权人我找不到有关执行此操作的正确方法的文档,所以我恢复到 1.2.1

Google 的文档和快速入门已过时

----------------------------------------------- ---------- 更新 -------------------------------- ---------------------

GoogleSheets 工程师的回复在帖子groups.google.com/forum

如果没有,请添加桥接头

  #import <GTMSessionFetcher/GTMSessionFetcher.h>       
  #import <GTMSessionFetcher/GTMSessionFetcherService.h>

这将解决 1.3.0 的问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 2020-12-03
    • 1970-01-01
    相关资源
    最近更新 更多