How can I set the refresh_token when working with the google api?(使用 google api 时如何设置 refresh_token?)
问题描述
我正在编写一个示例,试图了解如何使用 google api 更改日历上的事件.服务器是将根据数据库中的信息更新日历的用户.实际上不需要用户交互.
I'm working off an example trying to learn how to use the google api to change events on a calendar. The server is the user which will update the calendar based off of information in a database. No user interaction is actually required.
问题是我在获取/使用刷新令牌时遇到问题.我点击添加到页面的连接我"链接,它给了我一个错误:
The problem is I am having issues getting/using refresh tokens. I click the "Connect Me" link that gets added to the page and it gives me an error:
致命错误:未捕获的异常Google_Auth_Exception",消息为刷新 OAuth2 令牌时出错,消息:"{错误":invalid_request",error_description":缺少必需参数:refresh_token"}
我尝试以这种方式设置刷新令牌,以及类似的方法,但它们似乎都不起作用让我觉得我没有正确地实施它们.
I have tried setting the refresh token this way, along with similar methods, but none of them seem to work which makes me think I am implementing them incorrectly.
当我打印出 $_SESSION['access_token']
变量时,它没有显示 refresh_token
:
When I print out the $_SESSION['access_token']
variable, it shows no refresh_token
:
{"access_token":"token","token_type":"Bearer","expires_in":3599,"created":1417534503}
这是我用来在没有 refresh_token
部分的情况下授权用户"的函数(基于示例):
Here is the function I am using to authorize the 'user' without the refresh_token
portion(based off an example):
这是我用来将事件添加到日历的代码:
Here is the code I am using to add the event to the calendar:
如何设置缺少的参数:refresh_token"?代码结构有问题吗?我已经浏览了文档,我愿意多看一些,但如果有人能帮忙解释如何做到这一点,那就太棒了.谢谢!
How can I set the missing parameter: "refresh_token"? Are there issues with the structure of the code? I have looked through documentation, and I am willing to look some more, but if somebody can lend a hand at explaining how to do this, that would be amazing. Thanks!
推荐答案
检查token是否有refresh-token(如果你请求离线访问,refresh-token会在第一次和access token一起发送).
Check if the token has a refresh-token (if you request offline access, the refresh-token will be sent with the access token the first time).
类似的东西
save_refresh_token 在哪里保存你的刷新令牌(db).
Where save_refresh_token saves your refresh-token somewhere (db).
然后您可以通过以下方式检查令牌是否已过期:
Then you can check if token as expired by:
如果是,你可以更新:
然后将您的新访问令牌设置为会话:
And then set your new access token to the session:
这篇关于使用 google api 时如何设置 refresh_token?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!