0

Google ドライブを利用する PC (Java) と Android の両方のアプリケーションを作成しようとしています。OAuth 2.0 がどのように機能するかを理解するために例をいじくり回してきましたが、ユーザーがアプリケーションにデータへのアクセスを許可すると、認証コードをプログラムに自動的に返す良い方法が見つかりません。Google ドライブのクイックスタートの例では、ユーザー入力が必要な単純なコピー/貼り付けメカニズムを使用していますが、これはユーザーにとって便利ではありません。

ユーザーを煩わすことなく認証コードを取得する方法がいくつか提案されているようですが (ローカル Web サーバーを実行する、認証のために起動されたブラウザー ウィンドウを監視するなど)、Google は解決策を強く推奨しておらず、提供もしていません。これらのソリューションが基本的な説明を超えてどのように機能するかの例。次のガイドでは、セクション 4 でいくつかの提案を示しています (注: セクションを引用しようとしましたが、存在するリンク/画像の数を教えてくれませんでした):

https://developers.google.com/youtube/v3/guides/authentication#installed-apps

誰かが過去に似たようなものを実装したことがありますか、またはこれを行うためのベストプラクティスはありますか? 可能であれば、複数のプラットフォームで動作するソリューションを希望します (つまり、プラットフォーム固有のライブラリを使用しない)。

ユーザーが一度これを行う必要がある場合は大したことではないと思いますが (リフレッシュ トークンを保存し、それ以降はそれを使用するため)、それを回避する方法があるとよいでしょう。

4

2 に答える 2

0

Google ドライブ用の oAuth2 ソリューションを実装しました。結局、Google App Engine 経由でサービス アカウントを作成しました。開始するための適切なリンクは次のとおりです。

https://developers.google.com/drive/service-accounts

スプレッドシートなどのドライブ オブジェクトを編集する Dr. Edit の例があります。

GoogleCredential credential = new GoogleCredential.Builder()
            .setTransport(httpTransport)
            .setJsonFactory(jsonFactory)
            .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)                
            .setServiceAccountScopes(scopes)                
            .setServiceAccountPrivateKeyFromP12File(pk12)
            .setServiceAccountUser(ACCESS_DOMAIN_IMPERSONATE) // <-- set user email here    
            .build();

ドメインの Google ドメイン管理コンソール/cpanel で行う必要があることがいくつかあります。

1日ほど前に投稿した次のSO回答を確認してください。

OAuth Google API for Java がユーザーを偽装できない

于 2013-10-03T13:27:11.007 に答える
0

Oauth2 プロトコルでは、認証コードを取得する方法が 2 つあります。制御できる URL へのリダイレクト (自分が所有するサーバーまたはローカルホストを指している可能性があります) を使用する方法と、コピーを貼り付けることを使用する方法です。

最初の方法は、ユーザーのマシンでデスクトップ アプリからフローを起動するときに、おそらくリダイレ​​クト uri として localhost を使用して、必要なものです。codeurl パラメーターを処理できる小さな http サーバーをアプリで作成する以外に選択肢はありません 。ただし、ハックする必要があります。アプリから Web ブラウザーを起動するには、どの OS で実行できるのでしょうか。ユーザーのマシンが着信 http 接続を拒否するように構成されている場合はどうすればよいですか?

IMO、最善の行動はコピーペーストを行うことです:ユーザーは何が起こるかを知っています

于 2013-10-03T12:51:28.777 に答える