Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php slim-oauth2无效令牌(Slimframework 3)_Php_Oauth_Slim - Fatal编程技术网

Php slim-oauth2无效令牌(Slimframework 3)

Php slim-oauth2无效令牌(Slimframework 3),php,oauth,slim,Php,Oauth,Slim,我将chadicus/slim-oauth2集合用于slimframework 3 这是我的代码atm(在Apache2上运行): 我也有同样的问题,就是我不知道如何使用OAuth2服务器PHP 必须在数据库上创建OAuth2表,如下所示: 然后,您可以在数据库中创建用户,并使用PDO对用户令牌进行身份验证和保存: $pdo = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); $storage = new Stor

我将chadicus/slim-oauth2集合用于slimframework 3

这是我的代码atm(在Apache2上运行):


我也有同样的问题,就是我不知道如何使用OAuth2服务器PHP

必须在数据库上创建OAuth2表,如下所示:

然后,您可以在数据库中创建用户,并使用PDO对用户令牌进行身份验证和保存:

$pdo = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);

$storage = new Storage\Pdo($pdo);

$server = new OAuth2\Server(
    $storage,
    [
        'access_lifetime' => 3600,
    ],
    [
        new GrantType\ClientCredentials($storage),
        new GrantType\AuthorizationCode($storage),
    ]
);

对于任何从搜索引擎中偶然发现这个问题的人

首先,您必须理解OAuth2中的“内存”存储不是持久的,这意味着当您创建令牌时,它不会保存在任何地方。它的目的是向您展示该机制的令牌创建部分正在工作

其次,如果要对路由的客户端进行身份验证,则必须使用另一个存储(PDO或Redis)。这对于Redis来说相当简单。您只需在服务器上安装
redis server
,保护它,然后在代码中实现它。要获得易于使用的Redis实现,请检查composer软件包
predis/predis

有关如何使用Redis实现OAuth2的更多信息,请访问:

祝你今天愉快:)

$pdo = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);

$storage = new Storage\Pdo($pdo);

$server = new OAuth2\Server(
    $storage,
    [
        'access_lifetime' => 3600,
    ],
    [
        new GrantType\ClientCredentials($storage),
        new GrantType\AuthorizationCode($storage),
    ]
);