laravel светский человек не работает с JWT auth - PullRequest
0 голосов
/ 26 февраля 2020

Я работаю с socialite и jwt auth, вот мой код

class SocialAuthFacebookController extends Controller
{

  /**
   * Create a redirect method to facebook api.
   *
   * @return void
   */
    public function redirect()
    {  
        $provider = 'facebook';
        try {
            $socialite = Socialite::driver($provider)->redirect();
        } catch (InvalidStateException $e) {
            $socialite = Socialite::driver($provider)->stateless()->redirect();
        }

        return $socialite;
    }

    /**
     * Return a callback method from facebook api.
     *
     * @return callback URL from facebook
     */
    public function callback(SocialFacebookAccountService $service, Request $request)
    {
        if($request->has('code')) {
            $user = $service->createOrGetUser(Socialite::driver('facebook')->user());

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

            return redirect("/#/dashboard")->with('token', $token);

        } else {
           return Socialite::driver($provider)->redirect();
        }
    }
}

Я могу получить свой токен $ и $ user от моего обратного вызова fb login, но когда я перенаправляю его обратно на панель инструментов, я все равно не могу войти , Есть идеи?

Ответы [ 2 ]

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

Сейчас я работаю над его применением во внешнем интерфейсе и вижу этот код ($ auth.oauth2) в https://github.com/websanova/vue-auth/blob/master/docs/Methods.md, когда я вызываю функцию social ('facebook'), она работает хорошо, отправляя client_id и перенаправить меня на обратный вызов и получить ответ «код» от Facebook. Проблема в том, что когда меня перенаправляют обратно на мой URL-адрес обратного вызова в моем mount (), когда он обнаруживает, что в URL-адресе есть код, я снова отправляю запрос, и с параметром this.code я получаю сообщение об ошибке:

Ошибка клиента: POST graph.facebook.com/v3.0/oauth/access_token в результате 400 Bad Request ответа

Невозможно загрузить URL: домен этого URL не включен в домены приложения. Чтобы иметь возможность загрузить этот

, я установил 'Valid OAuth Redirect URI', но все еще получаю ту же ошибку

<script>
    export default {
        data() {
            return {
                context: 'oauth2 context',
                code: this.$route.params.code,
                type: this.$route.params.type
            };
        },
        mounted() {
            var app = this

            console.log(this.code)
            console.log(this.type)
            if (this.code) {
                this.$auth.oauth2({
                    code: true,
                    provider: this.type,
                    params: {
                        client_id: xxxxxx,
                        client_secret: 'xxxxxxxx',
                        code: this.code,
                        redirect_uri: 'mysite.com/#/dashboard'
                    },
                    success: function(res) {
                        console.log('success ' + this.context);
                    },
                    error: function (res) {

                        console.log('error ' + this.context);

                        console.log(res);
                    },

                });
            }
        },
        methods: {
            social(type) {
                this.$auth.oauth2({
                    provider: type || this.type,
                    rememberMe: true,
                    params: {
                        // code: this.code,
                        client_id: xxxxxxxx,
                        client_secret: 'xxxxxxxx',
                        redirect_uri: 'mysite.com/api/redirect/social'

                    },
                    success: function(res) {
                        console.log('success ' + this.context);
                    },
                    error: function (res) {
                        console.log('error ' + this.context);
                    }

                });
            }
        }
    }
</script>

```


0 голосов
/ 26 февраля 2020

потому что JWT не имеет гражданства, а светский полон. Я предполагаю, что вы используете фронтальный фреймворк, такой как реагирующий или подобный, вам нужно, чтобы ваш фронтальный фреймворк использовал socialite.

...