Laravel 5.3 Ошибка токена OAuth в REST API - PullRequest
0 голосов
/ 12 ноября 2018

Когда я пытаюсь зарегистрировать пользователя с мобильного телефона, эти данные вставляются в таблицу пользователей, а не в oauth_clients.Он должен загружаться одновременно.

Когда я пытаюсь войти, он показывает ошибку oauth / token 401

Вот мои маршруты:

Route::post('/register' , 'ProviderAuth\TokenController@register');
Route::post('/oauth/token' , 'ProviderAuth\TokenController@authenticate');

Это мойФункция регистрации, которая находится в TokenConrtoller:

public function register(Request $request)
{
    $this->validate($request, [
            'device_id' => 'required',
            'device_type' => 'required|in:android,ios',
            'device_token' => 'required',
            'first_name' => 'required|max:255',
            'last_name' => 'required|max:255',
            'email' => 'required|email|max:255|unique:providers',
            'mobile' => 'required',
            'password' => 'required|min:6|confirmed',
        ]);

    try{

        $Provider = $request->all();
        $Provider['password'] = bcrypt($request->password);
        $Provider['status'] = 'approved';

        $Provider = Provider::create($Provider);

        ProviderDevice::create([
                'provider_id' => $Provider->id,
                'udid' => $request->device_id,
                'token' => $request->device_token,
                'type' => $request->device_type,
            ]);

        return $Provider;


    } catch (QueryException $e) {
        if ($request->ajax() || $request->wantsJson()) {
            return response()->json(['error' => 'Something went wrong, Please try again later!'], 500);
        }
        return abort(500);
    }

}

Это мой метод аутентификации:

public function authenticate(Request $request)
{
    $this->validate($request, [
            'device_id' => 'required',
            'device_type' => 'required|in:android,ios',
            'device_token' => 'required',
            'email' => 'required|email',
            'password' => 'required|min:6',
        ]);

    Config::set('auth.providers.users.model', 'App\Provider');

    $credentials = $request->only('email', 'password');

    try {
        if (! $token = JWTAuth::attempt($credentials)) {
            return response()->json(['error' => 'The email address or password you entered is incorrect.'], 401);
        }
    } catch (JWTException $e) {
        return response()->json(['error' => 'Something went wrong, Please try again later!'], 500);
    }

    $User = Provider::with('service', 'device')->find(Auth::user()->id);

    $User->access_token = $token;
    $User->currency = Setting::get('currency', '$');

    if($User->device) {
        if($User->device->token != $request->token) {
            $User->device->update([
                    'udid' => $request->device_id,
                    'token' => $request->device_token,
                    'type' => $request->device_type,
                ]);
        }
    } else {
        ProviderDevice::create([
                'provider_id' => $User->id,
                'udid' => $request->device_id,
                'token' => $request->device_token,
                'type' => $request->device_type,
            ]);
    }

    return response()->json($User);
}

1 Ответ

0 голосов
/ 13 ноября 2018

Я думаю, что вы должны зарегистрироваться в JWT auth Like

$token = JWTAuth::fromUser($user);

после регистрации пользователя

Проверьте эту ссылку для получения дополнительной информации https://blog.pusher.com/laravel-jwt/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...