我正在使用 Laravel 5.4 和 Socialite 3.0
对于我添加的每个新社交名流提供商,我都会收到错误消息:
不支持驱动程序 [provider]。
例如,在添加 socialiteproviders/twitch 3.0 时,我会收到错误消息:
不支持驱动程序 [twitch]。
但是,我可以使用已经内置到 Socialite 中的提供程序,例如 github 可以按预期工作。
我尝试了三个不同的提供商,每次都得到相同的结果,我做错了什么?
以下是我的路线:
Route::get('/auth/bnet', 'BnetController@redirectToProvider');
Route::get('/auth/bnet/return', function() {
$user = Socialite::driver('battlenet')->user();
dd($user->accessTokenResponseBody);
});
Route::get('/auth/git', function() {
return Socialite::driver('github')->redirect();
});
Route::get('/auth/twitch', function() {
return Socialite::with('twitch')->redirect();
});
Run Code Online (Sandbox Code Playgroud)
这是我的 EventServiceProvider 的 $listen:
Route::get('/auth/bnet', 'BnetController@redirectToProvider');
Route::get('/auth/bnet/return', function() {
$user = Socialite::driver('battlenet')->user();
dd($user->accessTokenResponseBody);
});
Route::get('/auth/git', function() {
return Socialite::driver('github')->redirect();
});
Route::get('/auth/twitch', function() {
return Socialite::with('twitch')->redirect();
});
Run Code Online (Sandbox Code Playgroud)
我在 app.php 中将 SocialiteProviders\Manager\ServiceProvider::class, 添加到我的 providers 数组中,我还向我的别名数组添加了 Socialite 门面('Socialite' => …
我正在尝试使用本指南https://scotch.io/tutorials/laravel-social-authentication-with-socialite为Laravel 5.5实现Socialiate .数据从提供程序正确返回,但我无法定义使用和命名空间.
使用此配置:
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Socialite;
Run Code Online (Sandbox Code Playgroud)
结果是:
未找到"App\Http\Controllers\Auth\User"类
触发:
$authUser = User::where('providerId', $user->id)->first();
Run Code Online (Sandbox Code Playgroud)
但是,如果我添加App\User:
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\User;
use Socialite;
Run Code Online (Sandbox Code Playgroud)
结果是:
找不到类'App\Http\Controllers\Auth\Auth'
触发:
Auth::login($authUser, true);
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢.
目前在 Laravel 6 上,如果您安装 Socialite 并检查供应商上的代码,则他们用于获取 Facebook 详细信息的默认版本为 3.3。你可以签入:
vendor/laravel/socialite/src/Two/FacebookProvider.php
Run Code Online (Sandbox Code Playgroud)
此版本的图形可能已被弃用(不确定,但如果您检查 facebook 图形 api 资源管理器,则不能使用较低版本,目前只能使用 v5.0 或 v6.0)。在社交名流上使用时,是否有办法指定默认的 Facebook 图形版本?
我需要使用以下网址注册锦标赛:
http://laravel.dev/tournaments/1/register/
Run Code Online (Sandbox Code Playgroud)
这个 URL 在中间件 'auth' 中,所以如果用户没有登录,他会被重定向到登录页面。
我需要的是重定向到
http://laravel.dev/tournaments/1/register/
Run Code Online (Sandbox Code Playgroud)
社交登录后(我有 2 个提供商,fb 和 google)
在这种情况下,我不希望用户被重定向到 .env 中定义的重定向 url
这是我用来登录 Socialite 的功能:
public function execute($request, $listener, $provider) {
if (!$request) {
return $this->getAuthorizationFirst($provider);
}
$user = $this->users->findByUserNameOrCreate($this->getSocialUser($provider), $provider);
if (!is_null($user)){
$this->auth->login($user, true);
}else{
Session::flash('error', Lang::get('auth.account_already_exists'));
return redirect('auth/login');
}
return $listener->userHasLoggedIn($user);
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能让系统将我重定向到初始操作而不是默认的 redirect_url 参数。
我通过guest()函数正常登录解决了这个问题,但我不知道在这种情况下如何实现它。
问题与这篇文章非常相似
我正在完全按照文档进行操作。
https://github.com/laravel/socialite和https://laravel.com/docs/5.1/authentication#social-authentication
我已经在 Facebook 上创建了我的应用程序并且一切正常。当我使用 Facebook 按钮单击登录时,它会授权该应用程序并将我带回我的网站。但是,它不会显示我已登录。如果我使用 dd() 而不是下面的重定向,我会从我的 Facebook 帐户中获取所有数据。但是只有登录用户才能看到的页面是不可见的。
这是我的控制器:
public function redirectToProvider()
{
return Socialite::driver('facebook')->redirect();
}
public function handleProviderCallback()
{
$user = Socialite::driver('facebook')->user();
return redirect('my-profile')
->with('message', 'You have signed in with Facebook.');
}
Run Code Online (Sandbox Code Playgroud)
以下是我的路线:
Route::get('login/facebook', 'Auth\AuthController@redirectToProvider');
Route::get('login/facebook/callback', 'Auth\AuthController@handleProviderCallback');
Run Code Online (Sandbox Code Playgroud)
Socialite 已正确安装在 composer.json 中。这些类在 config/app.php 中,我的 FB 应用程序的 ID 在 config/services.php 中。
关于为什么它不起作用的任何想法?
我想知道我是否可以使用 Laravel 5 + Socialite 通过 Facebook Graph API 从 Facebook Fanpage 查询最新帖子。
我还没有找到任何例子。Socialite 仅用于用户身份验证而不用于 Grpah Api 请求吗?
facebook facebook-graph-api laravel laravel-5 laravel-socialite
我正在使用Laravel 5.4,Socialite因此我的用户可以使用Facebook.
我的网站使用子域newyork.example.com,paris.example.com example.com
Facebook URL回调登录的重定向必须absolute如此我设置http://example.com
public function redirectToProvider()
{
$_SESSION['originalURL'] ="http://paris.example.com";
return Socialite::driver('facebook')
->scopes(['rsvp_event', 'public_profile'])
->redirect();
}
Run Code Online (Sandbox Code Playgroud)
public function handleProviderCallback(SocialAccountService $service)
{
$user = $service->createOrGetUser(Socialite::driver('facebook')->user());
// $user->token;
Auth::login($user, true);
$originalURL = $_SESSION['originalURL'];
return redirect()->to($originalURL);
}
Run Code Online (Sandbox Code Playgroud)
当我在route登录/ FACEBOOK我可以看到原始URLparis.example.com与HTTP_POST
当我在路由login/facebook/callback的HTTP_POST是example.com,因为重定向的URL是example.com。我尝试将 URL 保存在 asession var但$_SESSION为空。
在 facebook 登录回调重定向后如何获取原始 …
试图让社交名流在我的应用程序上工作.Facebook返回The parameter app_id is required错误.
路线:
Route::get('/login/facebook', '\CommendMe\Http\Controllers\AuthController@redirectToProvider');
Route::get('/login/facebook/callback', '\CommendMe\Http\Controllers\AuthController@handleProviderCallback');
Run Code Online (Sandbox Code Playgroud)
services.php:
'facebook' => [
'client_id' => env('426129694395672'),
'client_secret' => env('840fca14fc9fac4b592cd49f285c2ee9'),
'redirect' => 'http://localhost/login/facebook/callback',
],
Run Code Online (Sandbox Code Playgroud)
AuthController.php
public function redirectToProvider() {
return Socialite::driver('facebook')->redirect();
}
public function handleProviderCallback() {
$user = Socialite::driver('facebook')->user();
$user->name;
}
Run Code Online (Sandbox Code Playgroud)
尝试/login/facebook路线时,Facebook会返回此错误.为什么会这样?
我正在使用laravel版本5.4.36,我使用Laravel Sociallite插件将用户连接到facebook.
现在我想要登录用户信息,如出生日期性别,地址,手机号码或此官方文档中给出的任何权限.
我试过以下代码
$facebookScope = [
'user_birthday',
'user_location',
];
$facebookFields = [
'name', // Default
'email', // Default
'gender', // Default
'birthday', // I've given permission
'location', // I've given permission
];
return Socialite::driver('facebook')->fields($facebookFields)->scopes($facebookScope)->redirect();
Run Code Online (Sandbox Code Playgroud)
现在,当我点击登录与Facebook按钮时,它显示错误
无效的范围:user_birthday,user_location.此消息仅向开发人员显示.如果存在,您应用的用户将忽略这些权限.请阅读以下文档获取有效权限:https://developers.facebook.com/docs/facebook-login/permissions
我尝试了不同的范围,如字段名称=年龄和范围= user_age_range字段名称=生日和范围名称= user_birthday为字段名称=朋友和字段名称= user_friends
难道我做错了什么 ?我是否需要更改我为登录创建的Facebook应用程序中的内容?
请建议.
在 laravel 文档中,有一部分是关于让用户停止使用的->userFromTokenAndSecret,但它似乎不适用于 facebook,并返回一个错误,表明该方法不存在。
如何通过令牌和秘密获取用户?
我使用 Laravel 作为 API,以便它无状态地工作,并且我不使用任何重定向。
我使用 Angular 应用程序登录并发送令牌。我需要处理这个。
laravel ×8
php ×6
facebook ×5
redirect ×2
dingo-api ×1
laravel-5 ×1
laravel-5.4 ×1
laravel-5.5 ×1