4

我正在尝试创建一个 PHP 网页,该网页需要从我的域中的谷歌电子表格中读取一些数据(我正在使用谷歌应用程序免费版)。

要阅读的电子表格是非公开的,但对我域中的某些人可见。由于它是非公开的,我知道即使我使用 API 读取它也会有一些身份验证和授权的东西。

我找到了这个页面,但有一些我不明白的地方: http ://code.google.com/intl/zh-TW/apis/spreadsheets/data/3.0/developers_guide.html#Auth

它说我们应该使用 OAuth 2.0 协议,这没关系。但它也在授权过程中说,“谷歌向用户显示一个 OAuth 对话框,要求他们授权你的应用程序请求他们的一些数据。” .

我的网页将显示从电子表格中读取的一些数据。因此,每当有人访问我的网页时,它都会向电子表格所有者显示一个对话框,请求许可?这就是它的意思吗?

任何建议都将受到欢迎。

4

4 回答 4

4

Google & OAuth 教程:我搜索了几天才找到这个。它比我使用过的任何其他 OAuth 风格教程都要好得多。它用于连接到 Google Docs/google drive。

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 回答
4

您实际上想要完成的是您的服务器和 Google 之间的服务器到服务器身份验证。

这样,当访问者进入您的页面时,您将从自己的电子表格中获取数据,而无需任何第三方参与。

我不可能在Google Service Account中找到您要查找的内容,请点击此处

此外,另一种解决方案(更容易完成,但可能会遇到一些挫折)是使用 oauth 2.0 协议和您的 Google 开发帐户(从 Google Console API 检索)。

  1. 如果您还没有,请创建一个 Google Dev 帐户(Google Console API)
  2. 使用“离线”授权为您的应用程序生成访问/刷新令牌 - 这意味着即使您没有使用电子表格帐户登录,您也可以使用您的开发帐户向电子表格帐户发出 API 请求。
  3. 保存您生成的刷新令牌并使用它一遍又一遍地生成访问令牌(访问令牌持续 1 小时)。

刷新令牌不应该过期,但如果它会过期,您可以随时再次生成它并用新的替换您拥有的令牌,并继续使用它生成访问令牌。

主要的挫折是如果您的刷新令牌失效,您将不得不手动替换它,因为它需要您重新授予对您的开发帐户的访问权限才能访问您的电子表格帐户。

我希望这能有所帮助。

梅尼

于 2012-10-31T13:48:30.980 回答
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 回答
2

是的,OAuth 协议意味着当您尝试从另一方(谷歌)询问受保护的资源时,您的网站应该将您的用户重定向到另一方的网站,向他显示谷歌的登录名/密码对话框,并请求确认用户同意允许您的网站使用来自其他网站的用户资源(在您的情况下为 google)。这就是 OAuth 的工作方式

并且 google 需要您的用户凭据,因为 google 不确定该用户是否正是该用户(例如,如果他没有任何 cookie)

于 2011-11-01T10:39:07.530 回答