web-dev-qa-db-ja.com

Laravelパスワードgrant_typeのパスポートinvalid_grant

私は自分のAPIのaccess_tokenを作成しようとしています。私は 以下の設定 を使用し、Postmanを使用してトークンをテスト/作成しています。 invalid_grantエラーを回避できないようです。

私は運がなければ見つけることができたすべての組み合わせのように見えるものを試しました。これが私のセットアップです:

POSTリクエストの送信先:http://mywebsite.local/oauth/token

本文では、form-dataを次のように設定しています(名前/値):

grant_type      password
client_id       1
client_secret   <super_long_string>
username        [email protected]
password        secret

ティンカーを使用してダミーユーザーを作成しました。

factory('App\User')->create()

上記のユーザー名/パスワードに新しく作成したユーザーを使用します。

私が何をしているかにかかわらず(何も渡さない限り)、これは私が常に目にするエラーです:

{
    "error": "invalid_grant",
    "error_description": "The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.",
    "hint": "",
    "message": "The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client."
}

私は何度も読んだことがあります。これは、取得しようとしているgrant_typeがクライアントと一致しないことを意味します。 php artisan passport:client --passwordを使用してクライアントを作成しているので、それが無効である理由がわかりません。クライアントが1つしかないので、正しいidを使用していることがわかります。 この問題 は同じように見えますが、私は見ていますが、それ以降はクローズされています。

私のヘッダーにはContent-Type application/jsonのみを設定しており、Authorizationヘッダーには何も設定していません。

他に何を試したらよいかわかりません。提案をありがとう!

4
Damon

ユーザーのパスワードをハッシュ化してみてください。最初は、パスワードは8文字以上にする必要があると思います。次に、作成したユーザーのパスワードとして「test1234」を使用する場合は、ターミナルに移動して次のように入力します。

>> php artisan tinker

>> echo bcrypt( 'test1234')

出力をコピーして、test1234ではなく、作成したユーザーのパスワードデータベース列に保存します。これで、 http://mywebsite.local/oauth/token への投稿リクエストが機能するようになります。

0
yoola