Firebase身份验证 - Googlesheets"请求缺少有效的API密钥。"错误403

时间:2017-06-20 10:59:47

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

尝试将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表格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 enter image description here

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。

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

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

  3. 我没有通过 GIDGoogleUserautheutheuthecher fetcherAuthorizer()

  4. 中的 service.authorizer 传递 GTMFetcherAuthorizationProtocol

    在1.3.0服务更长时间有一个授权人我找不到关于执行此操作的正确方法的文档,所以我还原到1.2.1

    Googles文档和快速入门已过期

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

    我对GoogleSheets工程师的回复是在groups.google.com/forum

    主题中

    如果您没有

    ,请添加桥接标头
      #import <GTMSessionFetcher/GTMSessionFetcher.h>       
      #import <GTMSessionFetcher/GTMSessionFetcherService.h>
    

    这将解决1.3.0的问题