Google Apps API - php:刷新令牌具有意外的转义字符

时间:2014-01-29 19:37:21

标签: php google-apps-script

经过一天的努力,为什么会失败:

client->refresh($refresh_token);    

(500错误),我发现刷新令牌有一个转义正斜杠:

"refresh_token":"1\/QnN3mTn_HPCaRwfpiCl11L0cT9u6z9ELb5URT4D_d6M",

删除反斜杠修复了问题。这是php或Google Apps API的问题吗?

上面的刷新令牌是从我的php脚本返回的:

echo $client->getAccessToken();

1 个答案:

答案 0 :(得分:1)

似乎您的代码或库代码决定在脚本执行期间的某个时刻转义令牌(可能通过addslashes())。这本身并不是php的问题,而是一个实现问题。

<强>更新 它看起来像是在结果上调用json_encode(),默认情况下它会转义斜杠。根据另一个SO答案(Why is json_encode adding backslashes?),这样做是为了避免在HTML中嵌入JSON时出现问题。

现在,前面提到的答案还提到“/ /”和“/”应该被JSON解析器视为等效,所以我很遗憾不确定为什么Google Apps会在这种情况下决定用500打你。

总之,你可以这么说 a)“PHP的json_decode()设计工作方式存在问题。默认情况下不应返回转义斜杠。”

b)“这是Google Apps API服务的一个问题。它应该将”\ /“和”/“视为JSON数据中的等效项。”

c)“这是针对PHP的Google Apps API库的问题。鉴于我发送refresh() getRefreshToken()返回的相同,未更改的数据,它应该执行必要的突变使数据对API调用有效的数据。“

不幸的是,这进入了意见领域,所以我将把它留在那里。