🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google API

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

OAuth

OAuth(Open Authorization)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

3回答

1828閲覧

ラズパイ 認証できない

raspypy

総合スコア247

Google API

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

OAuth

OAuth(Open Authorization)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2019/12/12 02:55

編集2020/03/26 07:00

##やろうとしていること

Raspberry piのデータをGoogle Driveにアップロードしたい。

##試していること

pi@raspberrypi:~/dev $ ./gdrive list

text

1Authentication needed 2Go to the following url in your browser: 3https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=hogehoge

と表示され、Oauth keyが表示されず、認証ができない状況です。

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

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

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

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

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

guest

回答3

0

今日同じ症状に合って、先程ひとまず解決できたので回答します。

GitHubやこちらの回答者様が仰るように、配布本体のOAuth認証が古くなっている事から起きている問題です。
なので、自分でOAuth認証(1.client_id 2.client_secret)を用意して、置換してやれば再び動きます。

Sign in with Google temporarily disabled for this appこちらを参考しました。

質問者様の別質問Python pydrive エラーを見るに、既にAPI有効にして、OAuth認証キーも発行できる様なので、もしpydriveが使いづらければお試しください。

投稿2020/01/14 14:34

linm25stg

総合スコア23

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

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

raspypy

2020/03/25 07:29 編集

pydriveを使用する過程で、OAuth認証(1.client_id 2.client_secret)は取得済です。
linm25stg

2020/01/15 10:26 編集

不明になっている`置換うんぬん~`は こちら ↓ を指してるかと思います(先の回答の[GitHubリンク](https://github.com/gdrive-org/gdrive/issues/506#issuecomment-567253689)のステップ3) > 3.Now you just need to edit the binary and insert your credentials instead of the one hard coded : - ```c $ sed -i "s|367116221053-7n0vf5akeru7on6o2fjinrecpdoe99eg.apps.googleusercontent.com|<your client id>|g" path/to/the/executable/gdrive $ sed -i "s|1qsNodXNaWq1mQuBjUjmvhoO|<your client secret>|g" path/to/the/executable/gdrive ``` やっていることを単純に説明すると `gdrive-linux-rpi` に元から入ってる`client_id `と`client_secret`をご自身で作成された物に**差し替え**ています(この辺が置換)。 `sed コマンド`に関しては[こちら参照](https://hydrocul.github.io/wiki/commands/sed.html)。 (sコマンド と -iコマンド のやってる事を見れば大体把握できるかと思います) ## ちょっとしたコードの解説 `$ sed -i "s|367116221053-7n0vf5akeru7on6o2fjinrecpdoe99eg.apps.googleusercontent.com|<your client id>|g" path/to/the/executable/gdrive` とは何ぞ? ```c $ sed -i // ← sed(作用:置換) -i(作用:標準出力せずにファイルを置き換える) /* s(作用:正規表現で置換処理) →*/ "s| 367116221053-7n0vf5akeru7on6o2fjinrecpdoe99eg.apps.googleusercontent.com // ← 元のclient_id | <your client id> // ←この一行(<>含め)全部消して、ご自身のclient_idを記入 /*g(作用:すべてのマッチした文字列を置換)→*/ |g" path/to/the/executable/gdrive // ← gdrive-linux-rpiがあるパス指定 ``` こちらが`client_id`の分。 `client_secret`も同じようにやって、Terminalで2行走らせれば問題ないはずです。 後は ```c $ gdrive list ``` を走らせて、出たURLをブラウザで開いて、[ここ](https://github.com/gdrive-org/gdrive/issues/506#issuecomment-568086416)に従って、後に現れる`Key`を`gdrive`に打ち込めば10月以前の動作に戻ると思います めちゃくちゃ見にくくなってるので、コピペしてMarkdownエディタで見てください。すみません…
linm25stg

2020/01/15 10:53 編集

## ↑でエラる場合 `sed`コマンドでエラーが出たり、`gdrive-linux-rpi`のPathが不明な場合を前提に、 以下、この3.のステップの単純なやり方を載せておきます。 やってることはバイナリ変更なので、`sed`でハマってるより、**バイナリエディタ**を用意したほうが早いと思います 1. [gdrive-org](https://github.com/gdrive-org/gdrive)からお手元のRaspberryのOSに合ったものを`Downloads`項目から落とす 2. OSに合った**バイナリエディタ**を用意する 3. 2箇所検索してご自身で用意されたOAuth認証(`client_id`と`client_secret`)に書き換える - 1箇所目の置換`client_id` → 元ID `367116221053-7n0vf5akeru7on6o2fjinrecpdoe99eg.apps.googleusercontent.com` - 2箇所目の置換`client_secret` → 元Secret `1qsNodXNaWq1mQuBjUjmvhoO` - 2箇所の置換後、保存する。 4. `gdrive`に適当なコマンドを走らせる。 例 `$ gdrive list` 5. 出現したURLをブラウザで開いて、Googleアカを選択後、現れた警告文の左下で続きに進む。 6. 5 で出た`Key`をコピペして認証完了 置換に間違えがなくって、保存に問題さえ起きなければ`sed`でも`バイナリエディタ`でもどちらでも問題ないと思います。 もしWin10で`gdrive`を使う場合は`PowerShell`よりは`バイナリエディタ`をおすすめしますが… 一応これ↓で`sed`の代わりにはなるんですが、エラーが… ```c $data=Get-Content .\test.txt | % { $_ -replace "置換する文字列","置換後の文字列" } $data | Out-File .\test.txt -Encoding UTF8 ```
raspypy

2020/03/25 07:28 編集

バイナリエディタは、どんなものを使用すれば良いのでしょうか? 教えていただけると助かります。
linm25stg

2020/01/16 08:02

いくつか方法があります。 ## ラズパイとWin10間で直接転送できる場合 Win10の方でバイナリ編集するのが一番簡単に済みます 1. Win用のバイナリエディタ[Stirling](https://www.vector.co.jp/soft/dl/win95/util/se079072.html)を用意します 2. DLした`raspberry pi用 (linux)のgdrive`を`Stirling`にドロップ 3. ツールバーの 検索タブ から まず`検索`。存在することを確認できたら`置換` - 1箇所目の置換`client_id` → 元ID `367116221053-7n0vf5akeru7on6o2fjinrecpdoe99eg.apps.googleusercontent.com` - 2箇所目の置換`client_secret` → 元Secret `1qsNodXNaWq1mQuBjUjmvhoO` - 大体こんな感じです![](https://drive.google.com/uc?export=view&id=1n8-EPULqscjEnHbaSTBczAsSezaN_OgQ) - 最後に保存すればとりあえずバイナリ変更完了です 4. 以降、Raspberryへの作業です - Raspberry内で gdrive用のディレクトリーを適当に用意して`gdrive`を転送させます - 後は該当ディレクトリーに`cd`して以下の作業を熟します ```c $ ls -l //権限確認 total 6832 -rw-rw-r-- 1 ec2-user ec2-user 6993472 Jan 16 06:12 gdrive-linux-x64 $ mv gdrive-linux-x64 gdrive // 名前変更 ←この辺はお好み、コマンドがgdriveで短く済むように 自分は変えてます $ chmod +x gdrive // 権限x追加 $ ls -l // もっかい確認して、xが増えてることを確認 total 6832 -rwxrwxr-x 1 ec2-user ec2-user 6993472 Jan 16 06:12 gdrive $ sudo cp gdrive /usr/local/bin/ // gdrive がコマンドで使えるように binにコピーしておきます。 `/usr/local/bin`で検索して下さい $ gdrive version // 適当に gdrive がコマンドとして動くことを確認 `bash: gdrive: command not found`が出ると ↑ が失敗してることになる gdrive: 2.1.0 Golang: go1.10.4 OS/Arch: linux/amd64 $ gdrive list // 問題のアレ Go to the following url in your browser: https://accounts.google.com/o/oauth2/xxxxxx Enter verification code: ``` - URLをブラウザで開き、Keyが出れば完了です。おつかされまでした。 ## 転送が難しい場合… 1. RaspberryでDLする ```c $ curl -JLO https://github.com/gdrive-org/gdrive/releases/download/2.1.0/gdrive-linux-x64 //URLの部分はお使いのラズパイOSのに従ってリンクを書き換えて下さい。 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 605 0 605 0 0 1811 0 --:--:-- --:--:-- --:--:-- 1805 100 6829k 100 6829k 0 0 2461k 0 0:00:02 0:00:02 --:--:-- 4000k curl: Saved to filename 'gdrive-linux-x64' ``` 2. `sed` で OAuth を置換 ```c $ sed -i "s|367116221053-7n0vf5akeru7on6o2fjinrecpdoe99eg.apps.googleusercontent.com|<your client id>|g" path/to/the/executable/gdrive $ sed -i "s|1qsNodXNaWq1mQuBjUjmvhoO|<your client secret>|g" path/to/the/executable/gdrive ``` 2. または [ここから](https://qiita.com/hachisukansw/items/7f0219d17707e149f389)適当なLinux用バイナリエディタを選んで編集します 3. Win10転送後と同様、名前変更したり、権限追加したり、コマンド追加したり、`gdrive list`で認証Keyを貰ってして下さい。 ## ちなみに 初回起動し、OAuthを設定したら、トークンファイルが生成されます ```c ~/.gdrive/token_v2.json```
raspypy

2020/03/25 07:28 編集

$gdrive listコマンドを実行すると、 urlが表示され、そのurlを開き、Googleアカウントでログインすると、 『このアプリでは「Google でログイン」機能が一時的に無効 このアプリは Google での確認がまだ完了していないため Google ログインを使用できません。 』 と表示され、keyが表示されません。 原因が分からず困っております。 何か原因を探る方法はありますでしょうか? なお、わたくしがダウンロードした"gdrive"は、 gdrive-linux-rpiです。
linm25stg

2020/01/17 09:08

https://github.com/gdrive-org/gdrive/issues/506#issuecomment-568086416 この画像のように、左下に何かがありませんか? ## なければ 可能性1 実はOAuth書き換えができていない ↑解決策 バイナリエディタで開いて、もう一回検索かけてみて下さい。ちゃんと用意したものになってますか? 可能性2 https://github.com/gdrive-org/gdrive/issues/506#issuecomment-567253689 ここのステップ2でOAuth認証がおかしくなっている Google APIが働いていなかったり、OAuth認証が動いていなかったり ↑解決策っていうより原因確認 https://github.com/gdrive-org/gdrive ここからWin10のexeを落としてバイナリ変更してPowerShellで `gdrive list`やってみる ちゃんとバイナリ書き換えたのにそれでもKeyが表示されないのであれば、OAuth認証ミスだと思われる gdrive-linux-rpiでも 当方がテスト用に使ったgdrive-linux-x64でも、手順間違えなけでば動くはずなので、多分書き換えミスか保存ミスなんじゃないかなぁって思う ## 注意 書き換えミスの場合、Win10からラズパイに転送後、もう一度`sudo cp gdrive /usr/local/bin/`を行って下さい。 コマンドの呼び出し先はそっちなので… どうしてもわからない場合は`linm25stg`名前のツイッターにDMして下さい。 あっちであれば画像張りやすいかなぁ。 DM開始時はフォローが必要みたいです、解決したらフォローはずしてもらっていいので~
raspypy

2020/03/25 07:28 編集

可能性1につきましては、最初に疑い、検索して確認済みです。 可能性2を確認するため、win10PCにて試してみたいと思います。
raspypy

2020/03/25 07:28 編集

ただ、今回使用した(書き換えた)id及びsecretを使用して、pydriveのときは、問題なく認証できたのですが、何か間違えているのでしょうか?
linm25stg

2020/01/20 08:36

ツイッターの方で問題解決しましたので、以下、ワード検索で本質問欄に辿り着いた方への注意 自分linm25stgの回答を見る際は「回答をMarkdownエディタにコピーして下さい」 URLをそのままクリックしても http://xxx) になっており、最後の括弧閉じのせいで変なところに繋がってしまいます。(それかカッコを消して下さい) 基本的にhttps://github.com/gdrive-org/gdrive/issues/506#issuecomment-567253689に従って進めば問題ありません。 セキュリティ的にも自分でOAuthを作って書き換えたほうがいいと思います。 やってることは 1. OAuth認証を作る 2. Google APIを有効にする 3. 必要なgdriveのOAuthバイナリ部分を2箇所書き換える これだけです。 躓くポイントは - バイナリの書き換えができない部分 ← `sed` コマンドではなくバイナリエディタを使う - URLのブラウザ認証が上手く行かない ← 左下に詳細とかあるので、それをクリックして先に進んで下さい(回答補足2個目の下部URL先:https://github.com/gdrive-org/gdrive/issues/506#issuecomment-568086416を確認して下さい)
guest

0

ベストアンサー

raspypyさん、

ここApplication is not verified #514でも、問題報告としてあがっていて、まだオープンの状態ですね。

この辺で、自分で、自分のcredentialを使って、gdriveをコンパイルして~~、とすっれば、Uploadができる、というのがかかれてますが、そのまま簡単に使うというのは、いまは、まだ解決策はなさそうです。

投稿2019/12/12 21:26

mt08

総合スコア1825

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

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

raspypy

2020/03/25 07:27 編集

やはりそのようですね。
guest

0

GoogleDriveAPIは有効でしょうか?

投稿2019/12/12 06:20

TinyTech

総合スコア107

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

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

raspypy

2019/12/12 06:24

有効になっています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問