2014-01-29 3 views
0

После борьбы за день с почему это провал:приложение Google API - PHP: обновить маркер имеет неожиданный побег Charactor

client->refresh($refresh_token);  

(500 ошибки), я обнаружил, что маркер обновления уже бежал косую черту:

"refresh_token":"1\/QnN3mTn_HPCaRwfpiCl11L0cT9u6z9ELb5URT4D_d6M", 

Снятие обратной косой черты устраняет проблему. Это проблема с API php или Google Apps?

выше маркер обновления был возвращен из моего PHP скрипт, как:

echo $client->getAccessToken(); 

ответ

1

Кажется, что либо ваш код или код библиотеки решил бежать маркер (возможно, через addslashes()) в какой-то момент во время выполнения скрипта. Это не проблема с php как таковой, а проблема с реализацией.

UPDATE: Похоже, библиотека звонит json_encode() на результат, который ускользает слэш по умолчанию. Согласно другому ответу SO (Why is json_encode adding backslashes?), это делается для того, чтобы избежать проблем при встраивании JSON в HTML.

Теперь в вышеупомянутом ответе также упоминается, что «\ /» и «/» следует рассматривать как эквивалентные синтаксическими анализаторами JSON, поэтому я, к сожалению, не уверен, почему Google Apps решает нанести вам 500 штук в этом случае.

Таким образом, в заключении можно сказать, что
а) «Это проблема с тем, как РНР json_decode() был разработан, чтобы работать. Он не должен возвращать сбежавший слэш по умолчанию.»

b) «Это проблема с сервисом API Google Apps. Он должен рассматривать« \/»и«/»как эквивалент данных JSON».

c) «Это проблема с библиотекой API Google Apps для PHP. Учитывая, что я отправляю refresh() те же неизменные данные, которые были возвращены getRefreshToken(), он должен выполнить необходимые мутации данных, чтобы сделать их действительными для вызов API. "

К сожалению, это попадает на территорию с вопросом о мнении, поэтому я собираюсь оставить ее на этом.

+0

Поскольку я повторяю то, что прямо возвращается из вызова API Google, я думаю, что это должно быть в их библиотечном коде. – svenyonson

+0

Правильно, Свен. Взгляните на мой обновленный ответ. – joadha

Смежные вопросы