Google SpreadSheetAPI使って、簡単な読み書きのできるiOS向けアプリをXcode上でSwiftで書いています。
自分では解決できないエラーに遭遇してしまったため質問させてください。
- 解決したいこと
"Request had insufficient authentication scopes."のエラーを解消したい
- 実現したいこと
自分のGoogle IDにログインして、SpreadSheet上の値を読み込む
- 現状のコードでできていること
URLSession/dataTaskを使ってGETリクエストを投げた.
(ログインまでは完了していて、取得したアクセストークンでOAuth2.0認証は通っているはず)
- 結果
Error:403が出て読み込めない
「"Scope"に、何かの情報を追加する」と行った類の記載が必要な気がするのですが、
このコードのどこにその記載を追加して良いか分からずという状況です。
皆様のお力添えよろしくお願いいたします。
###コード
Swift
1static func fetchDataFromSheet(accessToken: String, completion: @escaping (ReadSheet) -> Void){ 2 let baseUrl = "https://sheets.googleapis.com/v4/spreadsheets" 3 let spreadsheetId = [自分のSpreadSheetID] 4 let range = "test!A1:B3" 5 let urlString = baseUrl + "/" + spreadsheetId + "/values/" + range 6 7 let headers = [ 8 "Authorization": "Bearer "+accessToken, 9 "cache-control": "no-cache" 10 ] 11 12 guard let urlComponents = NSURL(string: urlString) else { 13 return 14 } 15 16 let request = NSMutableURLRequest(url: urlComponents as URL) 17 request.httpMethod = "GET" 18 request.allHTTPHeaderFields = headers 19 20 let shared = URLSession.shared 21 let task = shared.dataTask(with: request as URLRequest) { data, response, error in 22 23 guard let jsonData = data else { 24 return 25 } 26 27 do { 28 let jsonstr:String = String(data: jsonData, encoding: .utf8)! 29 print(jsonstr) 30 let readSheet = try JSONDecoder().decode(ReadSheet.self, from: jsonData) 31 32 completion(readSheet) 33 } catch { 34 print(error.localizedDescription) 35 } 36 } 37 task.resume() 38 }
###サーバーからの応答
Swift
1{ 2 "error": { 3 "code": 403, 4 "message": "Request had insufficient authentication scopes.", 5 "status": "PERMISSION_DENIED" 6 } 7}
あなたの回答
tips
プレビュー