当我按照Hadley的R google Oauth2.0演示访问Fusion表时,刷新令牌不可用。
演示:https://github.com/hadley/httr/blob/master/demo/oauth2-google.r
修改后的"离线"尝试示例:
google_token <- oauth2.0_token(oauth_endpoints("google"), myapp,
scope = "https://www.googleapis.com/auth/fusiontables",
type= "offline",
use_oob = FALSE,
cache = TRUE)
关于如何检索刷新令牌的任何指导都非常感谢。
- UPDATE**:使用以下代码,将返回带有google_token $凭据的字符串。这是此处引用的授权码吗:www.example.comhttps://developers.google.com/accounts/docs/OAuth2WebServer#offline
google_token <- oauth2.0_token(oauth_endpoints("google"), myapp,
scope = "https://www.googleapis.com/auth/fusiontables",
type= "access_type='offline'",
use_oob = FALSE,
cache = TRUE)
谢谢你。
2条答案
按热度按时间3hvapo4f1#
我来晚了一点,但希望这能帮助到一些人。我上周发现了这个问题,因为我也在为同样的问题而挣扎。像你一样,我阅读了API文档,并尝试在"oauth2.0_token"的"type"字段中输入"offline()"函数,但它搞乱了响应。我从Github存储库下载了HTHR包源文件,四处看看。经过一番挖掘,我找到了一个绕过它的方法。
如果您修改了oauth-init中的"authorize-url"变量,那么:
改为:
然后调用oauth-token和所有依赖函数(包括oauth-init),您将获得一个刷新令牌。由于某种原因,当oauth_token调用init_oauth2. 0时,它不传递"type"参数。
这是一个讨厌的变通方案,我可能犯了几个罪,但它确实工作。
gfttwv5a2#
甚至后来的聚会,但在这里插话,因为我非常努力地获得一个令牌对象,其中确实包含一个刷新令牌。
下面是我的代码:
原来我的问题不在于代码,而在于我在谷歌云中创建的应用程序。为了接收刷新令牌,在创建OAuth2客户端ID时必须选择"桌面应用程序"。我认为这会自动将访问类型设置为"离线"。以JSON格式下载此桌面客户端(在我的情况下为
.secrets/myapp.json
)。