如何在Drupal 8中将授权代码转换为Access令牌?

时间:2019-04-08 22:16:01

标签: api drupal oauth-2.0 drupal-8

因此,基本上,我使用Drupal 8网站与使用OAuth2的第三方API进行交互。我已成功将代码传递给/ 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;


    }

}

我收到此错误:

  

控制器必须返回响应(给定false)

我找到了该here

的代码

如果有人可以帮助我,我将非常感激。我整夜都在努力!我不确定自己在做什么错,但是我浏览了整个互联网以解决问题。

0 个答案:

没有答案