这篇文章是如何在GAE / Python上进行“ access_type = offline”
/仅服务器OAuth2操作
的后续文章。该http = credentials.authorize(httplib2.Http())
部分在测试时不再失败,但似乎在由GAE的cron运行时仍会失败,无法刷新my
access_token
:
/fetch
11:45手动完成工作。/cronfetch
在11:55安排工作即可,没有任何access_token
问题。/cronfetch
任务(除了计时,该时间与我的非测试性日常任务在01:00相同)失败:I 2013-06-10 05:53:51.324 make: Got type <class 'google.appengine.api.datastore_types.Blob'>
I 2013-06-10 05:53:51.325 validate: Got type
I 2013-06-10 05:53:51.327 URL being requested: https://www.googleapis.com/youtube/v3/playlists?alt=json&part=snippet%2Cstatus
I 2013-06-10 05:53:51.397 Refreshing due to a 401
I 2013-06-10 05:53:51.420 make: Got type
I 2013-06-10 05:53:51.421 validate: Got type
I 2013-06-10 05:53:51.421 Refreshing access_token
I 2013-06-10 05:53:51.458 Failed to retrieve access token: { “error” : “invalid_grant” }
I 2013-06-10 05:53:51.468 make: Got type
I 2013-06-10 05:53:51.468 validate: Got type
I 2013-06-10 05:53:51.471 validate: Got type
I 2013-06-10 05:53:51.471 get: Got type
E 2013-06-10 05:53:51.480 invalid_grant Traceback (most recent call last): File “/python27_runtime/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py”, line 1535, in
令牌刷新邮件列表消息(+
SO帖子1,SO帖子2,SO帖子3)上的此Geting“
invalid_grant”错误看起来与我的问题相似,但似乎与access_type=online
令牌有关。就我而言,我只使用default
access_type=offline
,并且看到初始访问请求中提到的 “不使用应用程序时执行这些操作” 。
credentials.authorize(Http())在
create_playlist(self)`144行的调用](https://github.com/ronjouch/dailygrooves/blob/master/dailygrooves/dailygrooves.py#L144)是错误的:
...
E 2013-06-10 08:26:12.817 http://www.onedayonemusic.com/page/2/ : found embeds ['80wWl_s-HuQ', 'kb1Nu75l1vA', 'kb1Nu75l1vA', 'RTWcNRQtkwE', 'RTWcNRQtkwE', 'ZtDXezAhes8', 'ZtDXezAhes8', 'cFGxNJhKK9c', 'cFGxNJhKK9c'
I 2013-06-10 08:26:14.019 make: Got type <class 'google.appengine.api.datastore_types.Blob'>
I 2013-06-10 08:26:14.020 validate: Got type <class 'oauth2client.client.OAuth2Credentials'>
I 2013-06-10 08:26:14.022 URL being requested: https://www.googleapis.com/youtube/v3/playlists?alt=json&part=snippet%2Cstatus
I 2013-06-10 08:26:14.100 Refreshing due to a 401
I 2013-06-10 08:26:14.105 make: Got type <class 'google.appengine.api.datastore_types.Blob'>
I 2013-06-10 08:26:14.106 validate: Got type <class 'oauth2client.client.OAuth2Credentials'>
I 2013-06-10 08:26:14.106 Refreshing access_token
E 2013-06-10 08:26:18.994 Deadline exceeded while waiting for HTTP response from URL: https://accounts.google.com/o/oauth2/token Traceback (most recent call last): File "/pyt
E 2013-06-10 08:26:18.996 http://www.onedayonemusic.com/page/3/ : found embeds ['80wWl_s-HuQ', '6VNu2MLdE0c', '6VNu2MLdE0c', 'YwQilKbK9Mk', 'YwQilKbK9Mk', 'KYdB3rectmc', 'KYdB3
E 2013-06-10 08:26:18.996 crawl_videos end
E 2013-06-10 08:26:18.996 create_playlist start
E 2013-06-10 08:26:18.996 create_playlist got creds
E 2013-06-10 08:26:18.996 create_playlist authorized creds
→为什么cron作业在手动运行5分钟后才能工作,但6小时后却失败了?我以为刷新令牌永不过期。我究竟做错了什么?
请注意,这是我的第一个GAE工作,也是我的第二个Python程序,非常欢迎常规代码审阅/咨询,但请保持谨慎:)
该代码位于GitHub上,可以在dailygrooves.org上访问我的实例。谢谢你的帮助!
一个invalid_grant
当刷新令牌不能被用来获取当前用户令牌的新的访问返回。这是发生在您的原因,因为存储的Credentials
对象具有空刷新令牌,即
>>> credentials.refresh_token is None
True
如在如何在GAE / Python上进行“ access_type = offline”
/仅服务器的OAuth2操作
中的 注释
中所述?:
如果用户已经授权了您的客户端ID,则随后您为这些用户执行OAuth时,他们将不会看到OAuth对话框,也不会获得刷新令牌。
Credentials
如上一个问题以及链接到的所有3个问题中所述,您需要确保使用有效的刷新令牌存储了您的存储令牌,并且最简单的方法是approval_prompt=force
在创建OAuth2WebServerFlow
或OAuth2Decorator
对象时使用(无论您使用的是哪个)
)。
> 我可以通过调用,例如在11:45手动运行我的作业。 在11:55立即调度作业可以工作,不会出现任何问题。 但是,今天早上醒来时,我看到相同的任务(除了时间相同,对于我的非测试日任务来说,时间是01:00)失败了: 令牌刷新邮件列表消息(+SO post 1,SO post 2,SO post 3)上的这个获取“invalid_grant”错误与我的问题类似,但它似乎发生在令牌上。在本例中,我只
我正在尝试获取Spotify API访问令牌。根据Spotify API站点的这些说明: 请求将包括请求正文中的参数: null null 生成: 我正试图在这样的球拍中实现这一点: http.rkt 这很奇怪,因为它告诉我,即使我的grant_type是client_credentials(请参见当我调用on)时,我的grant_type不受支持。是什么导致了这一切?
我目前正在开发一个简单的Spring Boot应用程序,在该应用程序中,我传递client_id和secret以获得访问令牌,从而获得一个刷新和访问令牌。 但是,当我尝试使用该令牌访问资源(我的REST API)时(具有以下URL:curl-h“authorization:Bearer ead8ba5d-88ad-4531-a821-db08bf25e888”localhost:8081/my-e
我试图通过查询/tokenendpoint从另一个应用程序中检索spring boot应用程序中的azure JWT访问令牌,但我收到的令牌似乎不正确。 该项目有一个spring boot后端和一个Eclipse rcp前端。我正在尝试从eclipse前端检索访问令牌。对此,我有下面的控制器: 返回具有以下格式的令牌: 使用具有以下相关依赖关系的spring boot构建: v2.2.4 V2.2
在spring security oauth2中,get access令牌和refresh令牌使用相同的endpoint'/OAuth/token',并由参数grant_type'code'或'refresh_token'识别。 但是我想将这个endpoint分成两个,比如'oauth/access_token'用于get访问令牌,'oauth/refresh_token'用于refreh访问令牌
我正在开发我的第一个Spotify应用程序,现在我正在处理授权过程。 到目前为止,我已经成功地从https://accounts.spotify.com/authorize 现在我通过PHP CURL request发送一个POST请求来获取我的访问令牌。 Spotify对此步骤的说明 我不断收到以下 JSON 错误响应,指示我的grant_type无效,它为我提供了三个有效的选项: {"erro
我无法从Spotify获得Android应用的访问令牌,因为我可以连接到endpoint。 我需要我的Android应用程序的访问令牌,我尝试了以下方法:1)Spotify Android auth library。我找不到spotify auth版本。他们谈论的aar。2) 手动生成url。下面是一个例子: 当我尝试连接时,我得到了各种可能的错误:“缺少所需的参数:client_id”、“INV
我正在将oracle从10升级到12,对于这个特定的项目,我遇到了以下错误: 似乎它没有识别我在DataSource上添加的配置: 我们使用的是Java 8,我们对代码有这些依赖关系: 问题是它正在为另一个项目工作(与这个项目具有相同的结构,但由于某种原因它在这里不起作用) 是否有任何遗漏或我可以找到问题并解决问题的地方?