gapi客户端库如何实际使用返回的oAuth访问令牌与Fusion Tables?

时间:2012-08-03 15:14:11

标签: google-fusion-tables

再次请好心人和仁慈的互联网人士。

我正在阅读Kathryn Hurley关于在Fusion Tables中使用OAuth的文章(链接在这里:OAuthandFusionTables),  并且还研究了Odi对我之前关于这个主题的问题的回答(链接在这里:My previous question),  还有阅读和阅读重新阅读google-api-javascript-client库参考(链接到这里:gapi reference)  但是我仍然非常对Fusion Tables,oAuth2.0以及Google提供的Javascript API示例中显示的google-api-javascript-client库的明显行为感到困惑(链接在这里:Google Example Javascript gapi with Fusion Tables

对于Google Javascript API示例:

A。)为什么使用gapi-client javascript库的Fusion Table oAuth请求表插入和更新是否在sql请求字符串中使用了返回的oAuth令牌?

......或换句话说: B.)当使用google-api-javascript-client库时,访问令牌的实际好处是什么?...根据Kathry Hurley的“应用程序2 - 创建允许用户访问的应用程序”的写入,返回的授权令牌是如何实际使用的他们自己的Fusion Table数据“?

......或换句话说: C.)浏览器会话和Google Fusion Table服务器之间的https ssl连接是否实际上是“授权”并允许访问?...这是某种类型的ssl连接(我不太了解)。 ..而且访问令牌都不允许访问,而令牌只是一个返回的“标志”,表示使用gapi-client时会话是好/连接/确定?

或D.)我只是产生幻觉?...并且没有正确地看到Javascript API示例和/或gapi客户端库的内容?

以下是更多细节:

首先试用Javascript API示例 (再次链接到这里:Google Example Javascript gapi with Fusion Tables) ......这真的很不错,而且对我来说还有一个挑战。

第二次尝试我的“hack”这个API示例,它抛出了一堆警报(所以我可以跟踪发生的事情),并且还将SQL字符串写入屏幕: (链接到这里:My example hack of the Google gapi example

从我的示例黑客中可以看出,对于“创建表”和“插入数据”,访问authToken不是提交给Fusion Tables的sql字符串的一部分: 例如:

{ “B”:{ “路径”: “/ fusiontables / V1 /查询”, “方法”: “POST”, “PARAMS”:{}, “报头”:{ “内容类型”:“应用/ X WWW的窗体-urlencoded “ ”内容长度“:105}, ”身体“:” SQL = INSERT%20INTO%201zkJhx0XdI3SsguI2Pided-m28mNSzI0MsMKNhY0%20(名称%2C%20Age)%20VALUES%20( '测试' %2C%204)“}}

上面的字符串中没有auth访问令牌。

但按照Kathry Hurley的说法(在OAuth 2.0和Fusion Tables上), 以下是步骤,特别注意第7步:

0注册您的申请

1位用户访问您的网络应用程序

2您的网络应用程序会将用户重定向到Google授权页面

3用户授予您的Web应用程序访问权限

4 Google将用户重定向回您的网络应用程序并返回授权码

5您的应用程序从Google请求访问令牌和刷新令牌  6 Google返回访问令牌,刷新令牌和访问令牌到期

7访问令牌可用于所有后续请求到Fusion Tables,直到令牌过期

8当访问令牌到期时,刷新令牌用于请求新的访问令牌

上面的步骤7似乎规定了Access令牌用于子句点请求。 ...并且提供的示例代码显示了包含的访问令牌:

urllib.urlencode({
      'sql': 'SHOW TABLES',
      'access_token': access_token
  }),

Soooo ......我对谷歌示例中的gapi.client库的明显行为的差异感到困惑(在执行插入或更新时,它显然没有在sql请求字符串上提交访问令牌)和写下访问Fusion Tables时应该如何提交访问身份验证令牌。

也许有些人可以解释一下? 提前谢谢

1 个答案:

答案 0 :(得分:1)

访问令牌很重要,它实际上用于验证后续请求,因此您只需执行一次(即直到令牌过期,这是1小时后的情况)。

如果您自己发送请求,通过向https://www.googleapis.com/fusiontables/v1/query发送HTTP POST请求,您必须提供访问令牌作为参数。但这不是这里的情况,你是通过gapi-javascript库发送令牌,它为你处理HTTP的东西。

但那里的访问令牌怎么样?这很简单:一旦使用gapi.auth.authorize()方法进行身份验证(请参阅Google gapi example),该库会记住访问令牌并将其用于所有后续调用。您可以使用调试控制台进行检查,并在查看Google示例时输入gapi.auth.getToken()

Screenshot of gapi access token