Как я могу преобразовать код авторизации в токен доступа в Drupal 8? - PullRequest
0 голосов
/ 09 апреля 2019

Так что в основном я использую свой сайт Drupal 8 для взаимодействия со сторонним API с помощью OAuth2. Я успешно получаю код, переданный в / oauth / callback, я просто не знаю, как преобразовать этот код в токен доступа.

Мой текущий модуль выглядит примерно так:

AMBE_module.routing.yml:

AMBE_module.token:
  path: '/oauth/callback'
  defaults:
  _controller:'\Drupal\ABME_module\Controller\AccessTokenController::token'
  _title: 'Get token'
 requirements:
   _permission: 'access content'

У меня есть этот контроллер, который, как я думал, брал код авторизации с URL-адреса и использовал его для получения токена доступа, но он не работает:

<?php

namespace Drupal\ABME_module\Controller;

use Drupal\Core\Controller\ControllerBase;



class AccessTokenController extends ControllerBase {

public function token() {

    $client_id = 'xxxx';
    $client_secret = 'xxxx';
    $redirect_uri= "http://my-site/oauth/callback";
    $authorization_code = $_GET['code'];

    if(!$authorization_code){
        die('something went wrong!');
    }
    $url = 'https://api.com/oauth2/token';
    $data = array(
        'client_id' => $client_id,
        'client_secret' => $client_secret,
        'redirect_uri' => $redirect_uri,
        'code' => $authorization_code
    );
    $options = array(
        'http' => array(
            'header'  => "Content-type: application/json\r\n",
            'method'  => 'POST',
            'content' => json_encode($data)
        )
    );
    $context  = stream_context_create($options);
    $result = file_get_contents($url, false, $context);
    var_dump($result);
    return $result;


    }

}

Я получаю эту ошибку:

Контроллер должен вернуть ответ (дано ложно)

Я нашел код для этого здесь

Если кто-нибудь может мне помочь, я был бы очень благодарен. Я пытался всю ночь! Я не уверен, что я делаю неправильно, но я просмотрел весь интернет, пытаясь решить эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...