Позвольте мне просто предвосхитить это, повторив, что эта ошибка не возникает ни в моей локальной, ни в онлайн-среде, только в рабочей среде; несмотря на то, что все 3 сервера используют одни и те же переменные среды:
REDDIT_USERNAME=username
REDDIT_PASSWORD=pwd
REDDIT_ID=id
REDDIT_SECRET=secret
Когда я пытаюсь запросить Reddit токен доступа в производстве используя этот метод:
/**
* @internal
*
* Request A Reddit Token
*
* If the client does not have a current valid OAuth2 token, fetch one here. Set it as a cookie.
*/
private function requestRedditToken() {
$response = $this->client->post(Reddit::ACCESS_TOKEN_URL, array(
'query' => [
[
'client_id' => $this->clientId,
'response_type' => 'code',
'state' => bin2hex(openssl_random_pseudo_bytes(10)),
'redirect_uri' => 'http://localhost/reddit/test.php',
'duration' => 'permanent',
'scope' => 'save,modposts,identity,edit,flair,history,modconfig,modflair,modlog,modposts,modwiki,mysubreddits,privatemessages,read,report,submit,subscribe,vote,wikiedit,wikiread'
]
],
'auth' => [$this->clientId, $this->clientSecret],
'form_params' => [
'grant_type' => 'password',
'username' => $this->username,
'password' => $this->password
]
));
$body = json_decode($response->getBody());
$this->tokenType = $body->token_type;
$this->accessToken = $body->access_token;
// Set the cookie to expire in 60 minutes.
setcookie('reddit_token', $this->tokenType . ':' . $this->accessToken, 60 * 60 + time());
}
Я получаю исключение, которое нарушает поток моего приложения, потому что $response->getBody()
равно invalid_grant
,
Тем не менее, я не могу понять, почему он недействителен, поскольку использование одинаковых учетных данных в разных средах и даже использование только Postman приводит к тому, что в ответ я получаю действительный токен доступа. Что тут происходит?
Задача ещё не решена.
Других решений пока нет …