我正在尝试使用Laravel 5.1中的社交网站登录.我已经安装了社交网站并遵循以下教程:
https://mattstauffer.co/blog/using-github-authentication-for-login-with-laravel-socialite
http://tutsnare.com/social-authentication-in-laravel-5/
我已经按照每一步,当尝试使用Github登录时,它重定向到Github并在登录后重定向到URL回调,但我的问题是它不会将用户数据存储在我的数据库中.
更新1
现在我的问题是如何使用社交网络验证用户.以下是我的代码,但它会抛出一个错误,说明未定义的索引密码.该错误因为Auth::attempt()有passsword参数.
if (Auth::attempt(['email' => $email, 'user_id' => $user_id])) {
return redirect()->intended('user/UserDashboard');
} else {
here i am going to insert if user not logged in already
}
Run Code Online (Sandbox Code Playgroud)
更新2
经过一些研究,我意识到我需要创建自定义身份验证驱动程序.如果有任何想法请发表您的答案
一年前提出同样的问题
我有一个奇怪的问题,使用Laravel Socialite通过Google API登录用户.
一切配置看似正常和普通,但我不断收到错误Missing required parameter: client_id.不仅如此,有时我再次尝试,Missing required parameter: redirect_uri尽管已经提供了所有这些参数,但错误仍然存在.
这就是它的设置方式:
service.php
'google' => [
'client_id' => 'xxxxxxxxxx-x98asxxxx913ofk5tqvgq7lqfpgdi5u2.apps.googleusercontent.com',
'client_secret' => 'mklOWJFhpbCzTKxxxx-xxxx',
'redirect' => 'http://myapp.com/auth/google/callback'
],
Run Code Online (Sandbox Code Playgroud)
routes.php文件
Route::get('/auth/{social_channel}', 'Auth\AuthController@redirect_to_provider');
Route::get('/auth/{social_channel}/callback', 'Auth\AuthController@handle_provider_callback');
Run Code Online (Sandbox Code Playgroud)
AuthController.php
/**
* Redirect the user to the Google authentication page.
*
* @return Response
*/
public function redirect_to_provider($social_channel)
{
return Socialite::driver($social_channel)->redirect();
}
/**
* Obtain the user information from GitHub.
*
* @return Response
*/
public function handle_provider_callback($social_channel, SocialAccountService $service)
{
$user = $service->create_or_get_user($social_channel, Socialite::driver($social_channel)->user()); …Run Code Online (Sandbox Code Playgroud) 在Laravel Socialite中,我们被重定向到facebook.但是当用户取消(不允许Facebook访问公共配置文件)时,它会给出错误授权异常
ClientException在RequestException.php行107:客户端错误:GET https://graph.facebook.com/oauth/access_token?client_id=1309844325833234&client_secret=1304bbdd28400tret49a295d324d577c&redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Fauth%2Ffacebook%2Fcallback `导致400 Bad Request响应:{"error":{"message":"缺少授权码","type":"OAuthException","code":1,"fbtrace_id":"Aq9wMwG6ewl"}}
我不想显示这个而是我想通过给出一个消息"Facebook登录失败"返回到我的网站主页,就像stackoverflow facebook登录中显示的那样.
我有一个带有Socialite的Laravel 5网络应用程序,可以通过Facebook帐户登录我的用户.
这是我的回调函数:
public function callback(SocialAccountService $service)
{
$user = $service->createOrGetUser(Socialite::driver('facebook')->user());
auth()->login($user);
return redirect()->to('/home');
}
Run Code Online (Sandbox Code Playgroud)
这是我的SocialAccountService,基本上该函数返回用户,如果存在或创建一个新用户:
class SocialAccountService
{
public function createOrGetUser(ProviderUser $providerUser)
{
$account = SocialAccount::whereProvider('facebook')
->whereProviderUserId($providerUser->getId())
->first();
if ($account) {
return $account->user;
} else {
$account = new SocialAccount([
'provider_user_id' => $providerUser->getId(),
'provider' => 'facebook'
]);
$user = User::whereEmail($providerUser->getEmail())->first();
if (!$user) {
$user = User::create([
'email' => $providerUser->getEmail(),
'name' => $providerUser->getName(),
]);
}
$account->user()->associate($user);
$account->save();
return $user;
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是,我能够通过Facebook成功登录我的用户,但当用户点击FB对话框上的取消获取权限时,它会中断.
我该如何处理这个错误?我可以在URL框中看到错误消息,但不知道处理它们.
PS我对Laravel和Socialite来说相当新
我有一个问题在这里也许同一个人可以帮助我:我安装社交网站pakcage到我的laravel项目,并开始它完美的Facebook,谷歌和linkedin提供商.但是现在当我尝试与facebook连接时,它始终会收到此消息,而其他提供商则完美连接.
怎么了 ?
RequestException.php第111行中的ClientException:客户端错误:
GET https://graph.facebook.com/v2.8/me?access_token=&fields=name,email,gender,verified,link&appsecret_proof=5fbda0d218f94cb8024712269c053f0186d360efd82cd358b588eaf621e0c79c导致400 Bad Request响应:{"error":{"message":"必须使用活动访问令牌来查询有关当前用户的信息.","type":"OAuthExce (截断......)
您好,我正在尝试获取从 linkedin 登录的用户的个人资料 url(登录部分已确定),但根据文档,我需要从 api 请求虚名。
所以我要求如下:
但无济于事,请注意,没有访问被拒绝或错误,并且它返回了一些数据,但没有 vanityName。示例返回包含已删除部分的 json
{
"firstName": ...
},
"lastName": ...
},
"profilePicture":...,
"id":"M-jljLc2ue"
}
Run Code Online (Sandbox Code Playgroud)
我使用以下文档作为参考
如果有任何用处,我使用 Laravel Socialite 包作为基础
嘿,
我在 Android 客户端上验证使用 Google 登录的用户时遇到问题,服务器端是 Laravel,在用户登录的另一端,它给了我一个必须向 Google 验证的令牌,
我使用 Socialite 包,我不知道如何从令牌中获取用户,它有一个名为的方法,getUserFromToken但它发生了很多错误,
我必须从 Google 控制台使用哪些 OAuth 凭据?我只是使用 Web 应用程序凭据,但没有答案!
代码是这样的:
$user = \Laravel\Socialite\Facades\Socialite::driver('google')->userFromToken($googleAuthCode);
dd($user);
Run Code Online (Sandbox Code Playgroud)
错误是:
客户端错误:
GET https://www.googleapis.com/userinfo/v2/me?prettyPrint=false导致401 Unauthorized响应:{“错误”:{“代码”:401,“消息”:“请求缺少所需的身份验证凭据。预期的 OAuth 2(已截断...)
我必须在请求中添加什么?
谢谢
我正在开发一个 flutter 应用程序,我想实现社交登录(Google 和 Facebook)。
\n我的 API 是用 Laravel 实现的,并使用 Laravel-socialite 来验证用户身份,有后端、Web 前端(使用 VueJs),现在我正在使用 flutter 开发移动应用程序。
\nWeb 应用程序运行良好(使用vue-social-auth包)。
\n到目前为止我所做的:
\n我面临的问题:
\n我似乎没有开始工作是将刚刚登录的用户发送到后端,以提供应用程序内的用户体验。
\n这是vue-social-auth包提供的内容以及我发送到后端的内容,该后端工作正常:
\n{code: "4/0AY0e-g442SMxdtLb_MVdQ63u1ydp48bbCRQco5Azoyf3y1rvYybDabyZGOvwAs7ZFJDQHA", scope: "email+profile+openid+https://www.googleapis.com/au\xe2\x80\xa6le+https://www.googleapis.com/auth/userinfo.email", authuser: "0", prompt: "consent"}\nRun Code Online (Sandbox Code Playgroud)\n这就是flutter_google_sign_in给出的(除了用户个人资料数据之外):
idToken: "",\naccessToken: "",\nserverAuthCode: "", \nRun Code Online (Sandbox Code Playgroud)\nserverAuthCode 始终为null。
我怎样才能使用相同的API逻辑,通过社交帐户登录flutter上的用户?
\n谢谢。
\n我正在使用Laravel 5.3和Socialite.
我收到400错误请求错误消息:
Missing required parameter: redirect_uri
Run Code Online (Sandbox Code Playgroud)
它生成的URL是:
https://accounts.google.com/o/oauth2/auth?scope=openid+profile+email&response_type=code&state=RYPmT1B93CaUdi44Z7iwfmRPx3hIy7an7yxAVY9l
Run Code Online (Sandbox Code Playgroud)
详情如下:
service.php
'google' => [
'client_id' => '1234455-u3ifk8tr1qs41487fmevg2h2s1v6ubue.apps.googleusercontent.com',
'client_secret' => 'DxSOS0p1xKNuPger3IS_E4-i',
'redirect' => 'http://localhost:8000/google/callback',
],
Run Code Online (Sandbox Code Playgroud)
路线
Route::get('/{provider}/redirect', 'Auth\RegisterController@redirectToProvider');
Route::get('/{provider}/callback', 'Auth\RegisterController@handleProviderCallback');
Run Code Online (Sandbox Code Playgroud)
Google控制台中的授权URI设置
http://localhost:8000/google/callback
Run Code Online (Sandbox Code Playgroud)
调节器
public function handleProviderCallback($provider)
{
try {
$social_user = Socialite::driver($provider)->user();
} catch (Exception $e) {
return redirect('/');
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用 Laravel Framework 5.6 版实现在线预订系统并Laravel Socialite实现 gmail 登录。
我有一个方法可以在预订之前检查用户是否登录,或者通过 redis 和 cookie 放置reserveData并redirectUrl指定uniqid以在登录后获取它:
public function checkAuthentication(Request $request)\n{\n $reserveData = json_decode($request->input(\'reserveData\'), true);\n Session::put(\'reserveData\', $reserveData);\n\n if (!Auth::check()) {\n $reserveID = uniqid();\n Cookie::queue(Cookie::forget(\'reserveID\'));\n Cookie::queue(Cookie::make(\'reserveID\', $reserveID, 1440));\n\n $stepData = [\n \'redirectUrl\' => route(\'reserve\', [\'productId\' => $reserveData[\'productId\']]),\n \'reserveData\' => $reserveData\n ];\n\n Redis::set($reserveID, serialize($stepData));\n\n return redirect()->route(\'redirectToGmail\');\n }\n\n return redirect()->route(\'reserve\', [\'productId\' => $reserveData[\'productId\']]);\n}\nRun Code Online (Sandbox Code Playgroud)\n\n重定向到Gmail:
\n\npublic function redirectToGmail()\n{\n return Socialite::driver(\'google\')->redirect();\n}\nRun Code Online (Sandbox Code Playgroud)\n\n问题是,仅在用户第一次尝试登录时uniqid从 …
laravel ×7
php ×5
facebook ×2
laravel-5 ×2
laravel-5.2 ×2
cookies ×1
flutter ×1
google-api ×1
google-oauth ×1
linkedin-api ×1
nginx ×1