2014-01-11 109 views
0

我試圖通過apigee JS API創建一個用戶帳戶。在12月中旬假期前我最後一次這樣做時,這很好。但是,現在,我收到了401未經授權的錯誤,讀取的內容爲token_expiredApigee 401未授權與token_expired

有沒有辦法刷新令牌?我不知道它爲什麼會過期。

這就是我想要的。首先我實例化數據客戶端。這裏沒有問題:

var dataClient; 
var client_creds = { 
    orgName: '*******', 
    appName: '*******' 
} 
dataClient = new Apigee.Client(client_creds); 

後來,試圖創建一個新用戶的時候,我得到了token_expired錯誤:

dataClient.request(options, function (error, response) { 
     if (error) { 
      console.log(response); 
      alert("Something went wrong when trying to create the user. " + response.error) 
      // Error 
     } else { 
      // Success - the user has been created, now login. 
      dataClient.login(user.email, user.password, 
       function (err) { 
        if (err) { 
         //error - could not log user in 
         console.log("There was an error logging in " + user.name); 
        } else { 
         //success - user has been logged in 
        } 
       } 
      ); 
     } 
    }); 

我也試過dataClient.signup,但同樣的錯誤。

回答

1

App Services中沒有刷新令牌;您需要遵循login flow以檢索新令牌。請注意,您可以指定ttl參數,像這樣,所以你不必這樣做,因爲頻繁:

https://api.usergrid.com/{org}/{app}/token?ttl=604800 

默認情況下,它被設置爲7天,但你可以改變默認應用最大ttl到0(未到期)或其他類似31104000000(365天)。

要做到這一點,你犯了一個PUT要求:

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

使用JSON有效載荷:

{ 
    "accesstokenttl":0 
} 

或者1年:

{ 
    "accesstokenttl":31104000000 
} 
+0

謝謝 - 什麼會不利於永不過期令牌?就我而言,令牌只是爲了獲得應用程序數據的最默認訪問權限,例如創建新用戶和登錄。 –

+0

不利的一面是,如果令牌受到損害,您必須手動使其無效(我相信通過更改帳戶密碼或對'.../token'進行新呼叫),否則擁有它的任何人都可以使用該令牌進行呼叫永遠。取決於你的數據有多敏感。 – brandonscript

+0

好的一點,謝謝 –

1

如果不工作對於您來說,JavaScript SDK的授權令牌會保存在瀏覽器的本地存儲中。在Chrome中,使用開發人員工具。在左側的資源選項卡中展開本地存儲條目。你應該看到類似「http://usergrid.dev」或類似的東西。選擇它並在右側看到accessToken的條目。刪除它,它應該可以解決你的問題。

+0

那麼如何刷新一個令牌?我有同樣的問題。令牌過期,現在我的QA人無法登錄。是否有可能在每次登錄時要求新的令牌?這不是它應該如何工作? – MoreScratch