質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1116閲覧

【Swift】Google Drive APIの利用ができない

bambook

総合スコア7

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/06/05 09:06

編集2017/06/08 00:09

###前提・実現したいこと
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)

以上、大変恐縮ですが、何卒宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2017/06/07 23:50

インストールされている GoogleAPIClientForREST のバージョンを教えて下さい。
bambook

2017/06/08 00:11

1.3.0になります。
guest

回答1

0

ベストアンサー

GoogleAPIClientForREST (1.3.0)

Quickstartに書かれている通り、

pod 'GoogleAPIClientForREST/Drive', '~> 1.2.1' pod 'Google/SignIn', '~> 3.0.3'

でインストールして下さい。
おそらくバージョンアップで仕様が変わったのだと思います。

投稿2017/06/08 00:14

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bambook

2017/06/08 00:32

無事、動きました! ありがとうございます! 指定されているバージョン以上のものが入っていれば良いと勘違いしておりました。 '~>'は指定マイナーバージョン内でのバージョンアップだけ許容するものなのですね。 単純なミスなのですが、まったく気づけなかったので本当に助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問