Я пытаюсь пройти аутентификацию в Yammer с помощью PHP. Приложение зарегистрировано с основной информацией. У меня есть идентификатор клиента и секрет.
На странице входа я размещаю ссылку на https://www.yammer.com/dialog/oauth?client_id={} Myclientid&redirect = {страница на моем сервере}
Когда я нажимаю на ссылку, она переходит к аутентификации в Yammer, если я на ней подписан, она переходит на экран, где просит пользователя связать приложение с его учетной записью Yammer, если нет, то пока запрашивает имя пользователя и пароль, поэтому хорошо. Я разрешаю приложение.
Он перенаправляет туда, куда он предназначен, и я получаю параметр «code» в GET.
Затем я делаю запрос GET:
https://www.yammer.com/oauth2/access_token.json?client_id={} Myclientid&client_secret = {MySecret}&код = {код только что получил}
Проблема в том, что у меня есть только страница с сообщением об ошибке «Извините, но что-то пошло не так. Мы получили уведомление об этой проблеме, и вскоре мы рассмотрим ее».
Конечно, я не получаю никакого ответа или постоянного токена.
Если я поместил URL-адрес прямо в браузере, я получу те же результаты.
Есть идеи, что я делаю не так?
Я не вижу ничего плохого. Я только что сделал то же самое мгновение назад, и я получил свой жетон. Единственное, что я сделал по-другому, это то, что URL перенаправления https://www.yammer.com, как сказано в https://developer.yammer.com/v1.0/docs/test-token
Я сделал все шаги процесса в браузере.
Понял…
Это довольно странно, но сейчас работает. Он начал работать после того, как я изменил «URI перенаправления» на странице регистрации на https://www.yammer.com а затем вернуться к URI в моем веб-сервере. Странно, не правда ли?
Если кто-то найдет это полезным, я использовал этот код (этот код появляется на странице после процесса аутентификации):
$yammercode = $_GET["code"];
define("REDIRECT_URI", "http://" . $_SERVER['SERVER_NAME'] . $_SERVER["SCRIPT_NAME"]);
define("API_KEY", "{ my API key given by Yammer}");
define("API_SECRET", "{ my API secret }");
$params = array('client_id' => API_KEY,
'client_secret' => API_SECRET,
'code' => $yammercode);
$url = "https://www.yammer.com/oauth2/access_token.json?" . http_build_query($params);
$context = stream_context_create(array('http' => array('method' => 'GET')));
$response = file_get_contents($url, false, $context);
echo "Response: $url<br><br>$response<br><br>";
Теперь я могу извлечь токен доступа из переменной $ response.