Я пытаюсь создать приложение, которое может помочь мне публиковать произведения искусства на разных платформах одновременно и в определенное время.
Итак, что я пытаюсь сделать, это просто получить код аутентификации от DeviantArt, используя Предоставление кода аутентификации из их API в PHP, затем я возьму этот код и включу егомое приложение, чтобы я мог использовать его для получения токена доступа и публикации рисунков в своей учетной записи.
Я сделал приведенный ниже код PHP, чтобы выполнить запрос GET на https://www.deviantart.com/oauth2/authorize, и он успешно отправил мне сообщение.на страницу аутентификации.Но когда я захожу в свою учетную запись, выдается ошибка 403 Forbidden Access.API требует, чтобы я опубликовал свое приложение и белый список URI перенаправления OAtuth2, и я уже сделал это.
Вот код в poster / assets / php / authDeviantArt.inc.php :
<?php
if(isset($_POST["submit"])){
$result = file_get_contents("https://www.deviantart.com/oauth2/authorize?response_type=code&client_id=9685&redirect_uri=http://myipaddress:80/poster/requestAuthorization.php", false);
echo $result;
} ?>
И вот файл в URI, который DeviantArt должен перенаправить мне ( poster / requestAuthorization.php ):
<?php
if(isset($_GET["code"])){
echo $_GET["code"];
}
?>
<html>
<head>
<title>Authorization</title>
<meta charset="utf-8">
</head>
<body>
<form action="assets/php/authDeviantArt.inc.php" method="POST">
<button type="submit" name="submit">Authorization DeviantArt</button>
</form>
</body>
</html>
UPDATE 01: Я удалил порт из URI как в белом списке, так и в redirect_uri, и он по-прежнему выдает ошибку 403, когда я вхожу в систему. Я также обнаружил, что если я передам свойство redirect_uriURI, который не внесен в белый список, будет отображать страницу с ошибкой вместо того, чтобы просить меня войти в систему. Я также попытался попросить его перенаправить меня на другую веб-страницу (youtube), но безуспешно (все еще выдает ошибку 403).
ОБНОВЛЕНИЕ 02: Один из ответов предположил, что ошибка может быть в том, что мне нужно отправить запрос с «АГЕНТ-ПОЛЬЗОВАТЕЛЕМ» в заголовке и сжать его.Теперь мой код выглядит так:
<?php
if(isset($_POST["submit"])){
$opts = array(
'http' => array(
'method'=>"GET",
'header'=>"User-agent: ".$_SERVER["HTTP_USER_AGENT"]
)
);
$context = stream_context_create($opts);
$result = file_get_contents("https://www.deviantart.com/oauth2/authorize?response_type=code&client_id=9685&redirect_uri=http://myipaddress/poster/requestAuthorization.php", false, $context);
echo $result;
}
?>
Приведенный выше код по-прежнему не решает проблему, возможно, потому, что мне нужно «сжать» мой HTTP-запрос GET?Я совсем новичок, и я пытался провести какое-то исследование, но я не мог найти, как это сделать.
ОБНОВЛЕНИЕ 03: Благодаря одному из ответов ниже, яузнал, как сжать мой запрос.К сожалению, это не сработало.Я отправлю электронное письмо в службу поддержки DeviantArt и посмотрю, смогут ли они мне помочь.Мой код сейчас такой:
<?php
if(isset($_POST["submit"])){
$opts = array(
'http' => array(
'method'=>"GET",
'header'=>"User-Agent: ".$_SERVER["HTTP_USER_AGENT"]."\r\n".
"Accept-Encoding: gzip\r\n"
)
);
$context = stream_context_create($opts);
$result = file_get_contents("compress.zlib://https://www.deviantart.com/oauth2/authorize?response_type=code&client_id=9685&redirect_uri=http://myipaddress/poster/requestAuthorization.php", false, $context);
echo $result;
}
?>