2014-01-29 23 views
0

掙扎與這是爲什麼失敗了一天之後:谷歌企業應用套件API - PHP:刷新令牌有意外逃逸的人物造型

client->refresh($refresh_token);  

(500錯誤),我發現刷新令牌已經轉義的正斜槓:

"refresh_token":"1\/QnN3mTn_HPCaRwfpiCl11L0cT9u6z9ELb5URT4D_d6M", 

刪除反斜槓解決了問題。這是使用PHP或Google Apps API的問題嗎?

上述刷新令牌是從我的PHP腳本返回:

echo $client->getAccessToken(); 

回答

1

看來,無論是你的代碼或庫代碼決定腳本的執行過程中,以逃避在某些點令牌(可能通過addslashes())。這本身並不是問題,而是一個實現問題。

UPDATE: 它看起來像圖書館呼籲的結果,在默認情況下逃脫斜線json_encode()。根據另一個SO回答(Why is json_encode adding backslashes?),這樣做是爲了避免在JSON中嵌入HTML時出現問題。

現在,上述答案還提到「\ /」和「/」應該被JSON解析器視爲等同,所以我很不確定Google Apps爲什麼決定在這種情況下使用500。

所以在最後,你可以說,
一)「這是用PHP的json_decode()設計的工作方式有問題。它不應該是默認返回逃脫斜線。」

b)「這是Google Apps API服務的問題,它應該將」\ /「和」/「視爲JSON數據中的等效項。」 「

c)」這是PHP的Google Apps API庫的問題,假設我發送的refresh()getRefreshToken()返回的相同的未更改的數據,它應該對數據執行必要的突變以使其適用於API調用「。

不幸的是,這進入了意見領域,所以我要離開它。

+0

因爲我回應從Google API調用直接返回的內容,所以我認爲它必須位於其庫代碼中。 – svenyonson

+0

對吧,斯文。看看我更新的答案。 – joadha