###前提・実現したいこと
iOSアプリから、GoogleDriveに保存されたファイルを確認できるようにしたいと考えております。
ひとまずサンプルとなる動作を確認したいと思い、Googleが提供されているiOS Quickstartの手順通りに進めたのですが、
どうにも行き詰まってしまいましたので、誠に恐縮ながらこの場をお借りしてご質問させていただきます。
###発生している問題・エラーメッセージ
self.service.authorizer = nil にて、 Value of type 'GTLRDriveService' has no member 'authorizer'. self.service.authorizer = user.authentication.fetcherAuthorizer() にて、 Value of type 'GIDAuthentication' has no member 'fetcherAuthorizer'.
上記 self.service.authorizer を有効にする、あるいは代替する処理が分からない、という状態です。
###該当のソースコード
iOS QuickstartのViewController.swift に記載されている通りです。
swift
1 func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, 2 withError error: Error!) { 3 if let error = error { 4 showAlert(title: "Authentication Error", message: error.localizedDescription) 5 self.service.authorizer = nil 6 } else { 7 self.signInButton.isHidden = true 8 self.output.isHidden = false 9 self.service.authorizer = user.authentication.fetcherAuthorizer() 10 listFiles() 11 } 12 }
###試したこと
swift
1 func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, 2 withError error: Error!) { 3 if let error = error { 4 showAlert(title: "Authentication Error", message: error.localizedDescription) 5 // エラーになるので試しにコメントアウト 6 // self.service.authorizer = nil 7 } else { 8 self.signInButton.isHidden = true 9 self.output.isHidden = false 10 // エラーになるので試しにコメントアウト 11 // self.service.authorizer = user.authentication.fetcherAuthorizer() 12 listFiles() 13 } 14 }
上記の2行をコメントアウトすると、ひとまずコードは動くようになるのですが、
次のエラー文が表示され、これまた解決できないという状況です。
Daily Limit for Unauthenticated Use Exceeded.Continued use requires signup. (認証されていない使用の1日の制限を超えました。引き続き使用するにはサインアップが必要です。)
単純に考えて認証がされていない、例えばサインインした情報が反映されていないのではないかと解釈しまして、
Google Developers Consoleの設定見直しや、本家ドキュメントを読み直すなど、色々と調べてみましたが、
結局は self.service.authorizer = user.authentication.fetcherAuthorizer()
の部分を
なんとかできなければならないのではないか、という解釈に戻り、その上で行き詰まっております。
呼び出し元のクラスの宣言を見てみると、authorizer関連の処理がコメントだけ残し処理が取り除かれていまして、
WebViewでGoogleアカウントのOAuth認証が使えなくなるの都合で廃止になったのかと思い、
関連記事を読んだのですが、OAuth 2.0の前提知識が不足しているためか判断がつかず、また探し方が悪いのか、
廃止になったのでこちらを使ってねという代替案が明記されたリリースノートも見つけることができませんでした。
プログラムによる問題があるとすればコメントアウトした部分、
そうでなければ認証設定や指定の部分かと見当をつけて探っているのですが、なかなか解決に辿り着けず困っております。
最悪、別手段でも良いので、iOSアプリからGoogle DriveのAPIが呼び出せるようになれば良いと考えており、
代替手段も模索してみたのですが、これという手段が見つけられておりません。
Alamofire(?)を利用する記事も試してみましたが、
上記 Daily Limit for Unauthenticated Use Exceeded.Continued use requires signup.
のエラーが現れてしまい、
これは自身の力での解決は難しいと判断し、今回ご質問させて頂きました。
###補足情報(言語/FW/ツール等のバージョンなど)
・macOS Sierra 10.12.5
・Swift 3.0.2
・Xcode 8.2.1
※下記、CocoaPodsのライブラリのバージョンを追記しました。
・CocoaPods(1.2.1)で導入した各ライブラリのバージョン
FirebaseAnalytics (3.9.0) FirebaseCore (3.6.0) FirebaseInstanceID (1.0.10) GTMOAuth2 (1.1.4) GTMSessionFetcher (1.1.10) Google (3.0.3) GoogleAPIClientForREST (1.3.0) GoogleSignIn (4.0.2) GoogleToolboxForMac (2.1.1)
以上、大変恐縮ですが、何卒宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー