【问题标题】:Laravel Socialite for Mobile APPs using APIsLaravel Socialite 用于使用 API 的移动应用程序
【发布时间】:2021-03-14 17:53:30
【问题描述】:

我正在使用 Laravel Socialite 包进行社交媒体(Facebook、Gmail)身份验证,在网站上创建帐户和登录,并且工作正常。

现在我需要在移动设备上提供相同的功能,但到目前为止我还没有得到任何有用的线索来说明在这种情况下需要做什么以及需要做什么。

我有存储用户信息的 users 表和存储社交名流返回的 user_id 和 provider_id 的 social_providers 表,使用以下代码。

public function handleProviderCallback(Request $request, $provider = null) {

    try {
        $socialUser = Socialite::driver($provider)->user();
    } catch (\Exception $e) {
        return redirect('/');
    }
    //check if we have logged provider
    $socialProvider = SocialProvider::where('provider_id', $socialUser->getId())->first();
    if (!$socialProvider) {
        $name = explode(' ', $socialUser->getName(), 2);
        $first_name = $name[0];
        $last_name = $name[1];
        //create a new user and provider
        $user = User::firstOrCreate(
                        ['email' => $socialUser->getEmail()], ['last_name' => $last_name,
                    'first_name' => $first_name,
                    'email_verified_at' => date('Y-m-d H:i:s')]
        );
        $user->socialProviders()->create(
                ['provider_id' => $socialUser->getId(), 'provider' => $provider]
        );
    } else {
        $user = $socialProvider->user;
    }

    auth()->login($user);

    return redirect('/');
}

现在如果是移动设备,需要做什么。我是否必须在移动设备上使用 android SDK 并将用户信息和 provider_id 发送到后端?或者需要在后端 Laravel 端做些什么?谢谢,如果有人能以基本方式指导我需要做什么以及在哪一侧(移动或后端)。

【问题讨论】:

    标签: api mobile laravel-5.7 laravel-socialite


    【解决方案1】:

    对于移动应用,您需要使用 Mobile SDK 来获取访问令牌,而在后端,您需要使用访问令牌来获取用户信息,如下所示

    $provider_user = Socialite::driver($provider)->userFromToken($request->access_token);
    

    【讨论】:

      猜你喜欢
      • 2019-09-30
      • 2020-09-13
      • 1970-01-01
      • 2014-09-17
      • 2016-06-28
      • 2017-04-18
      • 2012-05-27
      • 2019-10-04
      • 2016-10-22
      相关资源
      最近更新 更多