APIGEE:生成永不过期的accessstoken

时间:2014-06-12 01:17:33

标签: oauth-2.0 apigee

我在APIGEE BaaS中创建了一个集合,现在正在公开一个API,它可以从这个集合以及其他后端服务中混合数据。从API调用后端服务时,我使用的是accessstoken。但是,默认情况下,accesstoken的到期时间设置为604800毫秒。我尝试使用以下API调用

更改默认ttl

PUT:https://api.usergrid.com/<myorg>/<myapp>?client_id=<client_id>&client_secret=<client_secret> {"accesstokenttl":0}

它给了我一个如下的回复,这似乎表明请求已经完成。

"uri": "https://api.usergrid.com/<myorg>/<myapp>",
"entities": [
    {
        "uuid": "93495580-ed20-11e3-89d5-25d72fde3d7e",
        "type": "application",
        "name": "<myorg>/<myapp>",
        "created": 1402020991714,
        "modified": 1402535205960,
        "accesstokenttl": 0,

但是,当我尝试使用以下请求获取新的accessstoken时,它仍然显示设置为604800毫秒的到期时间。

POST:https://api.usergrid.com/<myorg>/<myapp>/token {"grant_type":"client_credentials", "client_id":<client_id>, "client_secret":<client_secret>

给我以下回应:

{
"access_token": "UREDStK1padfdffayGfNfoYtCiAAAAUaxsjHnfhkLkG1abYWVPC_MMWD3VFRaHyA",
"expires_in": 604800,

这里有什么我想念的吗?

1 个答案:

答案 0 :(得分:0)

您已正确更新了应用程序级别的最大令牌到期时间(总结):

PUT: https://api.usergrid.com/{org}/{app}/?client_id={app_client_id}&client_secret={app_client_secret}

使用JSON有效负载(不要忘记设置Content-Type: application/json标头!)

{
   "accesstokenttl":31104000000
}

其中tokenttl是以毫秒为单位的时间戳(或非过期,如您在示例中所做的那样)。

您现在需要做的是在令牌调用上设置TTL属性:

POST https://api.usergrid.com/{org}/{app}/token 

{
    "username":"{username}", 
    "password":"{password}", 
    "grant_type":"password", 
    "ttl":"31104000000"
}

这是指向Apigee docs的链接,详细讨论了令牌TTL。