api - Laravel Socialite 用于使用 API 的移动应用程序
问题描述
我正在使用 Laravel Socialite 包进行社交媒体(Facebook、Gmail)身份验证、在网站上创建帐户和登录并且工作正常。
现在我需要在移动设备上提供相同的功能,但到目前为止我还没有得到任何有用的线索来说明在这种情况下如何以及需要做什么。
我有存储用户信息的用户表和存储社交名流使用以下代码返回的 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 端做些什么?谢谢,如果有人可以以基本方式指导我需要做什么以及在哪一侧(移动或后端)。
解决方案
对于移动应用程序,您需要使用 Mobile SDK 来获取访问令牌,在后端,您需要使用访问令牌来获取用户信息,如下所示
$provider_user = Socialite::driver($provider)->userFromToken($request->access_token);
推荐阅读
- python-3.x - python中文本文件的处理顺序
- compression - 使用 LZMA 编码信息流
- python - 如何通过 python 为 Firefox 创建新的配置文件?
- modelica - 不同的 Modelica 仿真环境有什么区别?
- reactjs - 反应:帮助理解特定的柯里化用例
- angular - 无法通过 Matomo/Piwik 跟踪 Angular 8 中的路线变化
- python - 基于 Python 3 中的列合并/加入 2 个字典
- jenkins - 是否可以有多个 jenkinsfile 和 jenkinsfile 的自定义名称
- php - PHP - 更改与查询结果相关的颜色图标类
- python - 如果 json 请求为“无”,则继续“for”