«401 Несанкционированная ошибка» произошла в приложении haeroku с использованием github auth - PullRequest
0 голосов
/ 03 марта 2020

Привет. У меня laravel проект развернут на heroku, но github Auth не go хорошо. Когда я получаю доступ к «https://my-app.herokuapp.com/login/github», отладчик heroku в браузере возвращает ошибку следующим образом:

(1/1) ClientException
Client error: `GET https://api.github.com/user` resulted in a `401 Unauthorized` response:
{
“message”: “Bad credentials”,
“documentation_url”: “https://developer.github.com/v3”
}

Я погуглил эту ошибку и обнаружил, что все говорят «Установите URL обратного вызова правильно », Но я думаю, что уже сделал это. Вот мои коды и скриншот страницы настроек приложения GitHub.

web.php
Route::get('login/github', 'Auth\LoginController@ redirectToProvider');
Route::get('login/github/callback', 'Auth\LoginController@handleProviderCallback');
services.php
    ‘github' => [
        'client_id’ => env('GITHUB_CLIENT_ID'),
        'client_secret' => env('GITHUB_CLIENT_SECRET'), 
        'redirect’ => '/login/github/callback',
    ],
LoginController.php
use Illuminate\Support\Facades\Auth;
//my database access object
use App\Http\DAO;

class LoginController extends Controller
{

~~~~~~ 

    public function redirectToProvider()
    {
        return Socialite::driver('github')->redirect();
    }

    public function handleProviderCallback(Request $request)
    {
        //reading a stack trace, this line seems to occurs error.
        $github_user = Socialite::driver('github')->user();
        $github_id = [$github_user->user['login']][0];

        //if user already exists, get its User Model. Otherwise create a new Model.
        $dao = new DAO();
        $user = $dao->findUser($github_id);
        if (empty($user)) {
            $user = $dao->addNewUser($github_id);
        }

        Auth::login($user);
        return redirect('/');
    }

enter image description here

Что на земле не так? Конечно, проект работает на локальном хосте. Спасибо.

1 Ответ

0 голосов
/ 04 марта 2020

решаемая. Нужно, чтобы URL 'перенаправления' в сервисах. php - это полный путь к URL, а не относительно пути. На локальном хосте путь / login / github / callback неявно преобразуется в localhost / login / github / callback, поэтому я не заметил. Итак, правильный код:

    ‘github' => [
        'client_id’ => env('GITHUB_CLIENT_ID'),
        'client_secret' => env('GITHUB_CLIENT_SECRET'), 
        'redirect’ => 'https://*******.herokuapp.com/github/callback'
    ],
...