San*_*ota 3 php api oauth laravel-5 laravel-passport
Laravel Passport的默认响应如下所示:
{
"token_type": "Bearer",
"expires_in": 31536000,
"access_token": djabjkdakadbakdkakjdbjkba
}
Run Code Online (Sandbox Code Playgroud)
我需要添加一些自定义响应,例如:
{
"success":"true",
"message":"Login Successful",
"status":"200",
"data":{
"token_type": "Bearer",
"expires_in": 31536000,
"access_token":"djabjkdakadbakdkakjdbjkba"
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解决这个问题吗?
在寻找解决方案之前,我一直在努力奋斗数小时。这目前适用于我的Laravel 5.5.33版本:
在您的api.php文件中添加一条新路由。
Route::post('oauth/token', 'AccessTokenController@issueToken');
Run Code Online (Sandbox Code Playgroud)在YourProject / app / Http / Controllers / AccessTokenController.php中创建新文件
<?php
namespace App\Http\Controllers;
use App\User;
use Exception;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use League\OAuth2\Server\Exception\OAuthServerException;
use Psr\Http\Message\ServerRequestInterface;
use Response;
use \Laravel\Passport\Http\Controllers\AccessTokenController as
ATC;
class AccessTokenController extends ATC
{
public function issueToken(ServerRequestInterface $request)
{
try {
//get username (default is :email)
$username = $request->getParsedBody()['username'];
//get user
//change to 'email' if you want
$user = User::where('username', '=', $username)->first();
//generate token
$tokenResponse = parent::issueToken($request);
//convert response to json string
$content = $tokenResponse->getContent();
//convert json to array
$data = json_decode($content, true);
if(isset($data["error"]))
throw new OAuthServerException('The user credentials were incorrect.', 6, 'invalid_credentials', 401);
//add access token to user
$user = collect($user);
$user->put('access_token', $data['access_token']);
//if you need to send out token_type, expires_in and refresh_token in the response body uncomment following lines
// $user->put('token_type', $data['token_type']);
// $user->put('expires_in', $data['expires_in']);
// $user->put('refresh_token', $data['refresh_token']);
return Response::json(array($user));
}
catch (ModelNotFoundException $e) { // email not found
//return error message
return response(["message" => "User not found"], 500);
}
catch (OAuthServerException $e) { //password not correct..token not granted
//return error message
return response(["message" => "The user credentials were incorrect.', 6, 'invalid_credentials"], 500);
}
catch (Exception $e) {
////return error message
return response(["message" => "Internal server error"], 500);
}
}
}
Run Code Online (Sandbox Code Playgroud)做完了!您可以根据自己的条件在这里自定义任何内容。这是不创建自己的PassportServiceProvider的惰性方法。积分转至:nauvalazhar https://gist.github.com/messi89/489473c053e3ea8d9e034b0032effb1d
| 归档时间: |
|
| 查看次数: |
2186 次 |
| 最近记录: |