代码之家  ›  专栏  ›  技术社区  ›  davidesp

RuntimeException-会话存储未按要求设置-Laravel Socialite-Facebook

  •  0
  • davidesp  · 技术社区  · 6 年前

    我使用的是 laravel 5.7 laravel/socialite 3.1

    我想使用我刚为这个项目配置的Facebook应用程序登录。

    以下是我为此配置的主要文件:

    /.env.

    <预> <代码>… facebook_client_id=*** facebook_client_secret=*** facebook_callback_url=http://localhost:8000/auth/facebook/callback < /代码>

    /config/services.php

    <?PHP
    
    返回
    …
    'facebook'=>。[
    'client_id'=>env('facebook_client_id'),
    'client_secret'=>env('facebook_client_secret'),
    'redirect'=>env('facebook_callback_url'),
    
    ,
    ;
    < /代码> 
    
    

    /routes/api.php

    <?PHP
    
    使用照明\http\request;
    
    …
    
    route::get(“auth/facebook”,“socialitecontroller@redirecttoproviderfacebook”);
    route::get(“auth/facebook/callback”,“socialitecontroller@handleprovidercallbackfacebook”);
    < /代码> 
    
    

    /app/http/controllers/socialitecontroller.php

    <?PHP
    
    命名空间应用程序\http\controllers;
    
    使用社交名流;
    
    类socialitecontroller扩展控制器
    {
    公共功能重定向到提供Facebook()。
    {
    返回socialite::driver(“facebook”)->redirect();
    }
    
    公共函数handleProviderCallbackFacebook()。
    {
    $user=socialite::driver('facebook')->user();
    打印标记($user->token);
    }
    }
    < /代码> 
    
    

    我的问题是,由于某种原因,我得到了错误:

    runtimeexception
    未根据请求设置会话存储。
    < /代码> 
    
    

    如下图所示:

    我根本不想在这个项目上使用会话。我只想从facebook获得tokenon the callback inside:function handleProviderCallbackfacebook()

    你知道如何解决这个问题吗?

    谢谢!

    以下是我为此配置的主要文件:

    /Env

    ...
    FACEBOOK_CLIENT_ID=***
    FACEBOOK_CLIENT_SECRET=***
    FACEBOOK_CALLBACK_URL=http://localhost:8000/auth/facebook/callback
    

    /配置/services.php

    <?php
    
    return [
        ...
        'facebook' => [
            'client_id' => env('FACEBOOK_CLIENT_ID'),
            'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
            'redirect' => env('FACEBOOK_CALLBACK_URL'),
    
        ],
    ];
    

    /Prime/API.PHP

    <?php
    
    use Illuminate\Http\Request;
    
    ...
    
    Route::get('auth/facebook', 'SocialiteController@redirectToProviderFacebook');
    Route::get('auth/facebook/callback', 'SocialiteController@handleProviderCallbackFacebook');
    

    /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);
        }
    }
    

    我的问题是,由于某种原因,我得到了错误:

    RuntimeException
    Session store not set on request.
    

    如下图所示:

    enter image description here

    我根本不想在这个项目上使用会话。我只想得到token脸谱网在内部回拨时:function handleProviderCallbackFacebook().

    你知道如何解决这个问题吗?

    谢谢!

    1 回复  |  直到 6 年前
        1
  •  1
  •   Angad Dubey    6 年前

    来自社会名流 documentation

    无状态方法可用于禁用会话状态验证。这在向API添加社会身份验证时很有用:

    return Socialite::driver('google')->stateless()->user();