【问题标题】:Laravel Passport. Why can’t I create an access token?Laravel 护照。为什么我不能创建访问令牌?
【发布时间】:2020-09-21 19:22:18
【问题描述】:

当我执行登录时,没有创建访问令牌,在日志文件中我收到以下错误:

local.ERROR:资源所有者或授权服务器拒绝了请求。

(InvalidArgumentException(code: 0): JWT 字符串必须有两个点。

我使用 insomnia 程序提出了一个请求,那里一切正常,访问令牌出现在数据库中

我的功能登录:

public function login(Request $request)
{
    $req = Request::create(route('passport.token'), 'POST', [
        'grant_type'    => 'password',
        'client_id'     => 2,
        'client_secret' => 'lvDjvx5UgzeYJxQMjjLMSFL3psqXj2iuw2xLL6Yh',
        'phone_number'  => $request->phone_number,
        'password'      => $request->password,
    ]);

    $response = app()->handle($req);

    if ($response->status() == 400) {

        return response()->json([
            'message' => 'Н',
        ]);
    } else if ($response->status() == 401) {

        return response()->json([
            'message' => '',
        ]);
    }

    return $response;
}

【问题讨论】:

  • 'phone_number' => $request->phone_number, 替换为 'username' => $request->phone_number,

标签: laravel laravel-passport


【解决方案1】:

试试这个代码:

public function login(Request $request)
  {
    $req = Request::create(route('passport.token'), 'POST', [
        'grant_type' => 'password',
        'client_id' => Your client_id,
        'client_secret' => 'Your client_secret ',
        'username' => $request->username,
        'password' => $request->password
    ]);

    $response = app()->handle($req);
    if ($response->status() === 400) {

        return response()->json([
            'message' => 'Н',
        ]);
    }
    if ($response->status() === 401) {

        return response()->json([
            'message' => '',
        ]);
    }

    return $response;
}

在模型中用户

public function findForPassport($identifier) { return $this->where('phone_number', $identifier)->first(); }

【讨论】:

  • 这个是一样的,我在Model User中将username重新定义为phone_number。
【解决方案2】:

确保您正在使用的客户端的数据库中的“password_client”列为真。

如果是“personal_access_token”,则无法提供密码 grant_type 响应。它们用于获取 client_credentials grant_type 响应。

您可以在 oauth_clients 表中找到它。

希望回答对你有帮助

【讨论】:

  • password_client 是真的。它是 oauth_access_tokens
猜你喜欢
  • 1970-01-01
  • 2020-01-14
  • 2019-11-17
  • 2021-07-16
  • 1970-01-01
  • 2023-01-24
  • 2017-09-13
  • 2020-12-18
  • 2021-01-14
相关资源
最近更新 更多