再次请好心人和仁慈的互联网人士。
我正在阅读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时应该如何提交访问身份验证令牌。
也许有些人可以解释一下? 提前谢谢
答案 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()
: