因此,基本上,我使用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
的代码如果有人可以帮助我,我将非常感激。我整夜都在努力!我不确定自己在做什么错,但是我浏览了整个互联网以解决问题。