标签: laravel-socialite

Laravel 5 Socialite如何将重新请求(auth_type = rerequest)发送到Facebook

我正在使用Socialite进行Facebook注册/身份验证,当用户接受Facebook上的所有权限时,它的效果很好。但是当用户拒绝其中一项权限时,尤其是在我的应用程序中创建帐户所必需的电子邮件时,我遇到了一个问题。如果用户输入错误,并且仍然想使用Facebook身份验证,则必须使用auth_type = rerequest向Facebook API发送请求

从Facebook文档:

如果有人拒绝了您的应用程序的权限,则除非您将auth_type = rerequest和请求一起传递,否则登录对话框将不允许您的应用程序重新请求该权限。

有什么方法可以通过社交名流发送该消息吗?

laravel laravel-socialite laravel-5.1

2
推荐指数
1
解决办法
1366
查看次数

使用Laravel Socialite获取Facebook长时间访问令牌

我使用Laravel Socialite为我的laravel应用程序登录Facebook.我已经看过它的文档,但是我没有发现任何与获取长时间访问令牌有关的事情.任何机构都可以告诉我如何使用Laravel Socialite获取长时间访问令牌?

我们使用Socialite收到的访问令牌说[expiresIn] => 5174875.这是什么单位?是短期或长期访问令牌吗?

facebook laravel laravel-socialite

2
推荐指数
1
解决办法
1024
查看次数

RuntimeException - 会话存储未根据请求设置 - Laravel Socialite - Facebook

我正在使用Laravel 5.7Laravel/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)

php facebook laravel laravel-socialite laravel-5.7

2
推荐指数
1
解决办法
2068
查看次数

Laravel 名流 使用 LinkedIn 登录 | 错误 未授权范围错误

大家好,我正在尝试使用 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 laravel-socialite linkedin-api laravel-8 laravel-9

2
推荐指数
1
解决办法
831
查看次数

社交网库抛出错误curl_reset()在laravel 5中未定义

我在我的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)

laravel-5 laravel-socialite

1
推荐指数
1
解决办法
2342
查看次数

动态Laravel社交名媛配置

我需要动态配置我的提供程序。

$config = [
    'client_id' = 'xxxxxxx',
    'client_token' = 'xxxxxxx',
    'redirect' = 'http://example.com/'
];
return Socialite::with($provider)->setConfig($config)->redirect();
Run Code Online (Sandbox Code Playgroud)

但不幸的是,没有功能setConfig。

我需要设置提供程序,client_id,client_secret并动态重定向

有什么想法吗?

谢谢!

php oauth oauth-2.0 laravel laravel-socialite

1
推荐指数
1
解决办法
1562
查看次数

Laravel 社交名媛记住我

我正在使用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)

php laravel laravel-socialite

1
推荐指数
1
解决办法
1336
查看次数

Laravel API TOKEN 身份验证不起作用

我正在尝试使用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

1
推荐指数
1
解决办法
9323
查看次数

laravel 社交名流从谷歌授权码获取谷歌访问令牌

我有一个 Android 应用程序,它使用 google 身份验证来注册用户
,我正在使用它laravel socillite进行身份验证

我无法让它工作,因为 android 应用程序向我发送了授权代码而不是访问令牌,而且我不知道如何从中获取访问令牌根据Authorization Code
我的理解,我应该执行以下操作:

  • access token从 android获取Authorization Code
  • 用于Socialite::driver('google')->userFromToken($token)获取用户数据
  • 将令牌发送JWT到 Android 设备
    任何人都可以解释我如何使用laravel socillite

android google-authentication jwt laravel laravel-socialite

1
推荐指数
1
解决办法
3670
查看次数

Laravel 社交名流 + vue spa 将访问令牌返回给客户端

如何将在社交名流回调中获得的访问令牌返回给客户端?我需要将此数据返回给 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

1
推荐指数
1
解决办法
3411
查看次数

使用 Socialite 的 OAuth 错误“尝试访问类型为 null 的值的数组偏移量”

我使用 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 laravel-socialite

1
推荐指数
1
解决办法
2285
查看次数

从 Twitter OAuth2 获取电子邮件

我正在 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 开发人员面板中再也找不到此设置。

由于有关此主题的大多数信息都已过时,因此我将不胜感激。

twitter oauth-2.0 twitter-oauth laravel laravel-socialite

1
推荐指数
1
解决办法
1812
查看次数

如何使用社交网络谷歌驱动程序从谷歌获取用户数据

我正在尝试使用 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)

google-api oauth-2.0 laravel laravel-socialite laravel-5.5

0
推荐指数
1
解决办法
3767
查看次数