我正在使用Socialite进行Facebook注册/身份验证,当用户接受Facebook上的所有权限时,它的效果很好。但是当用户拒绝其中一项权限时,尤其是在我的应用程序中创建帐户所必需的电子邮件时,我遇到了一个问题。如果用户输入错误,并且仍然想使用Facebook身份验证,则必须使用auth_type = rerequest向Facebook API发送请求
从Facebook文档:
如果有人拒绝了您的应用程序的权限,则除非您将auth_type = rerequest和请求一起传递,否则登录对话框将不允许您的应用程序重新请求该权限。
有什么方法可以通过社交名流发送该消息吗?
我使用Laravel Socialite为我的laravel应用程序登录Facebook.我已经看过它的文档,但是我没有发现任何与获取长时间访问令牌有关的事情.任何机构都可以告诉我如何使用Laravel Socialite获取长时间访问令牌?
我们使用Socialite收到的访问令牌说[expiresIn] => 5174875.这是什么单位?是短期或长期访问令牌吗?
我正在使用Laravel 5.7和Laravel/Socialite 3.1。
我想使用Facebook我刚刚为此项目配置的应用程序登录。
这些是我为此配置的主要文件:
/.env
...
FACEBOOK_CLIENT_ID=***
FACEBOOK_CLIENT_SECRET=***
FACEBOOK_CALLBACK_URL=http://localhost:8000/auth/facebook/callback
Run Code Online (Sandbox Code Playgroud)
/config/services.php
<?php
return [
...
'facebook' => [
'client_id' => env('FACEBOOK_CLIENT_ID'),
'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
'redirect' => env('FACEBOOK_CALLBACK_URL'),
],
];
Run Code Online (Sandbox Code Playgroud)
/routes/api.php
<?php
use Illuminate\Http\Request;
...
Route::get('auth/facebook', 'SocialiteController@redirectToProviderFacebook');
Route::get('auth/facebook/callback', 'SocialiteController@handleProviderCallbackFacebook');
Run Code Online (Sandbox Code Playgroud)
/app/Http/Controllers/SocialiteController.php
<?php
namespace App\Http\Controllers;
use Socialite;
class SocialiteController extends Controller
{
public function redirectToProviderFacebook()
{
return Socialite::driver('facebook')->redirect();
}
public function handleProviderCallbackFacebook()
{
$user = Socialite::driver('facebook')->user();
print_r($user->token);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,由于某种原因我收到错误:
RuntimeException
Session store not set on request. …Run Code Online (Sandbox Code Playgroud) 大家好,我正在尝试使用 Laravel Socialite Package 来允许用户使用他们的 LinkedIn 帐户登录。我已经在 ENV 文件中设置了客户端 ID、秘密和 URL,如下所示:
LINKEDIN_CLIENT_ID=xyzSomeID LINKEDIN_CLIENT_SECRET=xyzSomeSecret LINKEDIN_URL=https://mydomainname.com/api/domain-login/linkedin/callback
但是当我尝试使用 LinkedIn 按钮登录时,出现以下错误
Unauthorized scope error scope profile is not authorized for your application LinkedIn Socialite login Laravel
几秒钟后,我被重定向回 URL,并出现以下错误
{"message":"Error occurred","data":"Client error: POST https://www.linkedin.com/oauth/v2/accessToken resulted in a400 错误请求 response:\n{\"error\":\"invalid_request\",\"error_description\":\"A required parameter \\\"code\\\" is missing\"}\n113"}
请注意:已启用使用 OpenID Connect 登录 LinkedIn。
任何这方面的提示都将受到高度赞赏。
我已经设置了运行良好的路线。开发者控制台已经设置并且工作正常。客户端 ID、Secret 和回调 URI 已添加到 ENV 文件中。
这是我的路线:
Route::get('domian-login/{provider}', [ControllerName::class, 'redirectToProvider']); Route::get('domain-login/{provider}/callback', [ControllerName::class, 'handleProviderCallback']); Route::post('domain/save-social-user', [ControllerName::class, 'saveSocialUser']);
我在我的laravel 5项目中使用了socialite包.我在hostgator中托管我的网站.我已经检查了三次,我在hostgator中的php版本是5.5.22.
但我仍然得到这个错误.
FatalErrorException in CurlFactory.php line 69:
Call to undefined function GuzzleHttp\Handler\curl_reset()
in CurlFactory.php line 69
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用Facebook以及使用社交网站的Google登录,但在重定向到我的控制器/功能的两种情况下都会抛出此错误.
请帮我.什么可能是错误
我的Auth控制器功能是
public function getFacebookLogin(){
return Socialite::driver('facebook')->redirect();
}
public function getHandleFbLogin(){
//echo "hey";
$user = Socialite::driver('facebook')->user();
print_r($user);
}
public function getGoogleLogin(){
return Socialite::driver('google')->redirect();
}
public function getHandleGpLogin(){
echo "hey";
$user = Socialite::driver('google')->user();
print_r($user);
}
Run Code Online (Sandbox Code Playgroud) 我需要动态配置我的提供程序。
Run Code Online (Sandbox Code Playgroud)$config = [ 'client_id' = 'xxxxxxx', 'client_token' = 'xxxxxxx', 'redirect' = 'http://example.com/' ]; return Socialite::with($provider)->setConfig($config)->redirect();
但不幸的是,没有功能setConfig。
我需要设置提供程序,client_id,client_secret并动态重定向
有什么想法吗?
谢谢!
我正在使用Socialite进行用户登录,我想设置一个remember_token以记住用户通过 Socialite 登录时的情况。
现在我有以下服务来创建或登录用户:
class SocialAccountService {
public function createOrGetUser(ProviderUser $providerUser) {
$account = SocialAccount::whereProvider('google')
->whereProviderUserId($providerUser->getId())
->first();
if ($account) {
return $account->user;
} else {
$account = new SocialAccount([
'provider_user_id' => $providerUser->getId(),
'provider' => 'google'
]);
$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)
使用以下控制器调用它:
class AuthController extends Controller {
public function logout() {
Auth::logout();
return redirect('/');
}
public function …Run Code Online (Sandbox Code Playgroud)
我正在尝试使用api authentication token. 但即使在使用正确的令牌后,它的说法未经授权。
我使用 laravel auth 和 socialite 进行社交认证,所以我的api.php路线是这样的
Route::group(['middleware'=>'auth:api'], function(){
Route::get('hello','ApiTestControler@index');
});
Run Code Online (Sandbox Code Playgroud)
我试图用这个网址访问这个
http://localhost:8000/api/hello
并在标题中
token: TOKEN HERE
Content-Type: application/json
Accept: application/json
Run Code Online (Sandbox Code Playgroud)
我期待它让我登录并显示 ApiTestController index methord
但它抛出一个错误401 unauthorized
我如何解决这个问题并使用 API 令牌获取用户身份验证?
我的控制器
class ApiTestController extends Controller
{
public function index(){
return json_encode ("Welcome REST API");
}
}
Run Code Online (Sandbox Code Playgroud)
用户迁移表
$table->increments('id');
$table->string('name')->unique();
$table->string('first_name')->nullable();
$table->string('last_name')->nullable();
$table->string('email')->unique()->nullable();
$table->string('password');
$table->rememberToken();
$table->boolean('activated')->default(false);
$table->string('token');
$table->ipAddress('signup_ip_address')->nullable();
$table->ipAddress('signup_confirmation_ip_address')->nullable();
$table->ipAddress('signup_sm_ip_address')->nullable();
$table->ipAddress('admin_ip_address')->nullable();
$table->ipAddress('updated_ip_address')->nullable();
$table->ipAddress('deleted_ip_address')->nullable();
$table->timestamps();
$table->softDeletes();
Run Code Online (Sandbox Code Playgroud)
和身份验证配置 config\auth.php
'guards' => [
'web' => [ …Run Code Online (Sandbox Code Playgroud) authentication oauth-2.0 laravel-5 laravel-socialite laravel-passport
我有一个 Android 应用程序,它使用 google 身份验证来注册用户
,我正在使用它laravel socillite进行身份验证
我无法让它工作,因为 android 应用程序向我发送了授权代码而不是访问令牌,而且我不知道如何从中获取访问令牌根据Authorization Code
我的理解,我应该执行以下操作:
access token从 android获取Authorization CodeSocialite::driver('google')->userFromToken($token)获取用户数据JWT到 Android 设备laravel socillite 如何将在社交名流回调中获得的访问令牌返回给客户端?我需要将此数据返回给 vue 以便用户登录。 令牌数据
这是我在 vue 中获取重定向 url 的代码
googleLogin(){
const self = this;
let socialLogin = {
name: 'google'
};
self.$http.post(`api/googleLogin`, socialLogin)
.then(response => {
console.log('GOOGLE LOGIN RESPONSE ', response.body);
window.location = response.body;
})
}
Run Code Online (Sandbox Code Playgroud)
对于后端
public function googleLogin(Request $request){
$socialType = $request->name;
return response()->json(
Socialite::driver($socialType)
->with(['social_type' => $socialType])
->stateless()
->redirect()
->getTargetUrl()
);
}
public function googleLoginCallback(){
$http = new \GuzzleHttp\Client;
$user = Socialite::with('google')->stateless()->user();
$userCredentials = [
'token' => $user->token,
'refreshToken' => $user->refreshToken,
'expiresIn' => $user->expiresIn,
];
$response = …Run Code Online (Sandbox Code Playgroud) single-page-application vue.js laravel-socialite laravel-5.6
我使用 Laravel Socialite 制作 OAuth,我一步一步地尝试了 3 个不同的指南并导致相同的错误Trying to access array offset on value of type null。
我的 composer.json
"require": {
"php": "^7.3.1",
"fideloper/proxy": "^4.0",
"laravel/framework": "^6.2",
"laravel/socialite": "^4.3",
"laravel/tinker": "^2.0",
"laravel/ui": "^1.2",
"socialiteproviders/vkontakte": "^4.0"
},
Run Code Online (Sandbox Code Playgroud)
还有我的 LoginController
public function redirectToProvider()
{
return Socialite::driver('github')->redirect();
}
public function handleProviderCallback()
{
$user = Socialite::driver('github')->user();
dd($user);
}
Run Code Online (Sandbox Code Playgroud) 我正在 Laravel 中使用 Socialite 来登录 Twitter。
我知道并非所有 Twitter 用户的帐户都附有电子邮件,但对于我的应用程序,用户确实需要电子邮件地址。我可以阻止没有附加电子邮件的人登录,但目前每个用户都将电子邮件字段设置为空。
我正在使用这个函数重定向到 Twitter:
return Socialite::driver($provider)->redirect();
Run Code Online (Sandbox Code Playgroud)
我已经尝试过使用这样的范围:
return Socialite::driver($provider)->scopes(['email'])->redirect();
Run Code Online (Sandbox Code Playgroud)
但 Twitter 是唯一不允许范围的提供商。
回调返回 Facebook 和 google 等其他提供商的电子邮件地址,但在使用 Twitter 时似乎缺少一些东西。
对于 OAuth1,有一个设置可以启用返回电子邮件字段的选项,但由于 twitter 接受 OAuth2,我在 Twitter 开发人员面板中再也找不到此设置。
由于有关此主题的大多数信息都已过时,因此我将不胜感激。
我正在尝试使用 laravel google socialite 驱动程序,我需要使用从 api 调用中获取的访问令牌从 google 获取用户数据。但是当我认为我做的一切都正确时,它给出了一个错误说Call to protected method Laravel\\Socialite\\Two\\GoogleProvider::getUserByToken()
我知道它说我无法访问该方法,因为它受到保护。那么如何解决这个问题。
我的目标
我的目标是验证我从我的移动应用程序获取的社交访问(基本上是谷歌)令牌,并将该用户的该特定用户的数据存储到我从社交名流 My Route 中收到的数据库中 api.php
Route::post('login','api\unAuthApiCall@index');
Run Code Online (Sandbox Code Playgroud)
我的控制器
namespace App\Http\Controllers\api;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;
use Laravel\Socialite\Facades\Socialite;
class unAuthApiCall extends Controller
{
//Get the authentication token
public function index(Request $request){
//get the auth token
$authToken= Input::get('auth_token');
//Validate authtoken with google and get user's data
$driver = Socialite::driver('google');
$socialUserObject= $driver->getUserByToken($authToken);
return json_encode($socialUserObject);
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的回应
{
"message": "Call to protected method Laravel\\Socialite\\Two\\GoogleProvider::getUserByToken() from context 'App\\Http\\Controllers\\api\\unAuthApiCall'", …Run Code Online (Sandbox Code Playgroud) laravel ×10
oauth-2.0 ×4
php ×3
facebook ×2
laravel-5 ×2
android ×1
google-api ×1
jwt ×1
laravel-5.1 ×1
laravel-5.5 ×1
laravel-5.6 ×1
laravel-5.7 ×1
laravel-8 ×1
laravel-9 ×1
linkedin-api ×1
oauth ×1
twitter ×1
vue.js ×1