1

オープンソースのノードモジュールを作成しています。このモジュールでは、各ユーザーのプライベートGoogleドライブファイルにアクセスする必要があります。私はこれらのさまざまな認証タイプのすべてに頭を抱えて、ロードブロックに来ています。私が集めたものから、認証OAuth2リダイレクト/コピー&ペーストを使用しないプライベートGoogleドライブデータへのアクセス

  1. I、ライブラリ作者の二つの主要な種類があり、私のライブラリのOAuth2で各ユーザを認証するために必要な公開鍵と秘密鍵で提供しています。これは、自分のアプリケーションに自分のデータにアクセスする権限を与えるURLを与えることを意味し、アクセスコードをコピーして端末に戻してもらうようにします。私はthisチュートリアルを実行して動作させることができましたが、この方法はライブラリにパッケージ化しなければならないキーと不必要に困難なために危険です。

  2. Google APIコンソールにアクセスし、独自のAPIキーを取得して、何らかの設定ファイルを使用してそのAPIを自分のライブラリに提供してもらうようにしてください。 URLのリダイレクトや、コピーや貼り付けはしません。アクセスできるのは自分のクレデンシャルだけです。

2は、私にはかなり良く聞こえる:このライブラリは、それがユーザーの手の中にあります一度私とは全く関係ありませんので、彼らは私と一緒に認証持つように間違って感じています。しかし、GoogleのAPIを使ってこれを行う唯一の方法は、Googleサービスアカウントを作成し、JSONをダウンロードして、thisブログ記事の一番上のコメントに類似したフローを実行し、手動で私の個人的なGoogleドライブファイルへのサービスアカウントの電子メールアクセス。これは、自分自身の私的なデータにアクセスするために多くの仕事をしているようだ。これについてもっと良い方法がありますか?他のAPIのかなり標準的な流れは、サービスアカウントを通じてGoogleのAPIでのみ利用可能ですが、方法があり、私はそれを見ていないだけです。私はかなり新しい認証ですので、どんな助けもありがたいです。ありがとう!

答えて

1

まず、私はあなたがオープンソースプロジェクトをクライアントIDとクライアントの秘密で公開することはできませんが、これはGoogle Developersコンソールで作成したものです。これはgoogles terms of serviceとは異なります。

1.開発者の資格情報(パスワード、キー、クライアントIDなど)は、あなたが使用し、APIクライアントを識別するためのものです。 の秘密を秘密にしておき、 を防ぎ、他のAPIクライアントがあなたの資格情報を使用するのを阻止するための合理的な努力をしてください。 開発者の資格情報をオープンソースプロジェクトに埋め込むことはできません。

クライアントIDがopen source projectsに公開されていることに関する別の質問です。

2番目に、Oauth2またはサービスアカウント、またはその両方を実際に使用するようにユーザーに指示できます。

ユーザーが自分のデータにアクセスするだけで、他のユーザーのデータにアクセスする必要がない場合は、サービスアカウントを使用してGoogleドライブのフォルダをサービスアカウントと共有する方法を指示する必要があります。しかし、あなたの側の権限は、アップロード時に厄介なことがあります。サービスアカウントは、ユーザーのGoogleドライブアカウントにアップロードされたファイルを所有します。サービスアカウントにユーザーの権限を追加する必要があります。そのため、ユーザーは、ファイル。

最も簡単な方法は、認証されたユーザーが所有するファイルをコードがアップロードするときにOauth2になるため、サービスアカウントで使用したのと同じアクセス許可の問題が発生しないようにすることです。

+0

各ユーザーにOAuth2を使用させる方法を教えてください。私はOAuth2がURLをどこに与えるのだろうと思っていました。そして、urlは "Westonにx、y、zを許可しました"と言います。しかし、それが私の資格情報がURLに与えられていない場合、何がポイントですか? URLのコピーと貼り付けをしなくても、OAuth2で認証する方法はありますか? – Weston

+0

あなたのプロジェクトをダウンロードするときには、設定ファイルやGoogle Developer Consoleから自分の資格情報を追加できる場所を与えなければなりません。 – DaImTo

+0

OAuthの画面は、同じフロー(彼らにURLを与え、コンソールにコピーアンドペースト)を行うでしょうが、「x、y、zを実行する権限を与えてください」と言っていますか?それを行う必要があるのは非常に奇妙なことです。サービスアカウントの流れのように、プログラム的にすべてを行う方法があると思いました。 – Weston

関連する問題