4

ドメイン内のGoogleスプレッドシートからデータを読み取る必要があるPHPWebページを作成しようとしています(Google Apps Free Editionを使用しています)。

読むスプレッドシートは非公開ですが、私のドメインの一部の人に表示されます。非公開であるため、APIを使用して読み取っていても、認証と承認の機能がいくつかあることはわかっています。

このページを見つけましたが、理解できないことがあります: http ://code.google.com/intl/zh-TW/apis/spreadsheets/data/3.0/developers_guide.html#Auth

OAuth 2.0プロトコルを使用する必要があると表示されますが、これは問題ありません。ただし、承認プロセス中に、「GoogleはユーザーにOAuthダイアログを表示し、アプリケーションにデータの一部を要求することを承認するように求めます」とも述べています。

私のウェブページには、スプレッドシートから読み取ったデータが表示されます。それで、誰かが私のWebページにアクセスするたびに、スプレッドシートの所有者に許可を求めるダイアログが表示されますか?これはどういう意味ですか?

どんなアドバイスでも大歓迎です。

4

4 に答える 4

4

実際に達成しようとしているのは、サーバーとGoogleの間のサーバー間認証です。

このように、訪問者がページに入ると、サードパーティの関与なしに、自分のスプレッドシートからデータを取得します。

あなたが探しているものをGoogleサービスアカウントで見つけることはできません、そしてここに

また、別の解決策(これははるかに簡単ですが、多少の後退がある可能性があります)は、Google devアカウント(Google Console APIから取得)でoauth2.0プロトコルを使用することです。

  1. まだ作成していない場合は、Google Devアカウントを作成します(Google Console API)
  2. 「オフライン」付与を使用して、アプリケーションのアクセス/更新トークンを生成します。つまり、スプレッドシートアカウントでログインしていない場合でも、開発者アカウントを使用してスプレッドシートアカウントにAPIリクエストを送信できます。
  3. 生成した更新トークンを保存し、それを使用してアクセストークンを何度も生成します(アクセストークンは1時間続きます)。

更新トークンは期限切れになることは想定されていませんが、期限切れになった場合は、いつでも再度生成して、持っていたものを新しいものと交換し、アクセストークンを生成し続けることができます。

主な後退は、更新トークンが無効になった場合に、手動で置き換える必要があることです。スプレッドシートアカウントにアクセスするには、開発アカウントへのアクセスを再付与する必要があるためです。

これが少しお役に立てば幸いです。

メニー

于 2012-10-31T13:48:30.980 に答える
4

GoogleとOAuthのチュートリアル:これを見つけるために何日も検索しました。私が使用した他のOAuthスタイルのチュートリアルよりもはるかに優れています。Google Docs/googleドライブに接続するためのものです。

Pythonの例はここにあります。Javaなどの他の例も参照してください: https ://developers.google.com/drive/examples/python

それにリフレッシュトークンを追加する必要があることに注意してください。しかし、それはあなたが期待するのと同じように機能します。

また、スプレッドシートに接続するには、次を使用します。

          SpreadsheetService service =
                  new SpreadsheetService("MySpreadsheetIntegration-v1");

          service.setHeader("Authorization", "Bearer " + accessToken);
于 2012-12-31T01:38:26.453 に答える
2

はい、OAuthプロトコルは、保護されたリソースを他の側(google)から要求しようとすると、サイトがユーザーを他の側のサイトにリダイレクトし、ユーザーが同意したことの確認を要求して、ユーザーにgoogleのログイン/パスワードダイアログを表示する必要があることを意味しますあなたのサイトが他のサイト(あなたの場合はグーグル)からのユーザーのリソースを使用することを許可します。これがOAuthの仕組みです

そして、グーグルはユーザーが正確にこのユーザーであるかどうかわからないので、グーグルはあなたのユーザーの資格情報を必要とします(例えば彼がクッキーを持っていない場合)

于 2011-11-01T10:39:07.530 に答える
2

新しく提供されたoauth2フローを使用できます

//flow use httpTransport, clientSecrets, json factory and datastore factory
val flow = new GoogleAuthorizationCodeFlow
  .Builder(httpTransport,JSON_FACTORY,clientSecrets,SCOPES)
  .setDataStoreFactory(datastoreFactory)
  .build()

// authorize
val credential=new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user")

gdataサービスで使用します。

val service:SpreadsheetService=new SpreadsheetService("SpreadsheetIntegration") 
 service.setOAuth2Credentials(credential)

Scalaの完全な例:https ://github.com/spaced/spreadsheet-oauth2-example

于 2015-02-25T12:48:52.423 に答える