1

Facebook の情報を取得しようとしている小さなアプリケーションを作成していますが、認証を機能させることができません。

最初に、次のようにセットアップしAppServiceProviderました:

FacebookSession::setDefaultApplication(static::APP_ID, static::APP_SECRET);

次に、私の見解では、authURLに移動するボタンがあります。
ルートは、以下を含むauthを使用しています。HomeController@index

public function auth(Request $request)
{
    $helper = new FacegroupRedirectLoginHelper($request->url());

    if($session = $helper->getSessionFromRedirect()) {
        dd($session);
    }

    return redirect($helper->getLoginUrl());
}

FacebookRedirectLoginHelperFacebook の基本クラスを拡張する独自のクラスを作成しました。これには、LumenSession実装を活用するためだけに、次のメソッドがあります。

protected function storeState($state)
{
    Session::put(static::SESSION_KEY, $state);
}

protected function loadState()
{
    return $this->state = Session::get(static::SESSION_KEY, null);
}

このコードはどういうわけか機能していません。インターネットでもこれを行っている人を見てきました。何が間違っている可能性がありますか?セッションは常にNULL.

4

2 に答える 2

2

Laravel 用 Facebook SDK V5 は Lumen で正常に動作します。ルーティングを変更するだけで済みます。LaravelFacebookSdk を Lumen で構成して使用する方法は次のとおりです。

最初に使用するには

{
    "require": {
        "sammyk/laravel-facebook-sdk": "~3.0"
    }
}

次に、ルーメンのbootstrap/app.phpに追加します

// Facebook Sdk Provider
$app->register('SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider');

次に、構成を公開します(構成フォルダーがルーメンでセットアップされていることを確認してください。デフォルトでは存在しません)

$ php artisan vendor:publish --provider="SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider"

主なステップは、デフォルトでサービスプロバイダーと Laravel Facebook Sdk を構成しLaravelFacebookSdk.php、 をLaravelUrlDetectionHandler.php使用することIlluminate\Routing\UrlGeneratorです。これらのファイルはベンダーの src フォルダーにあり、Laravel\Lumen\Routing\UrlGenerator. これで完了です。(注意して、ベンダーの src ファイルを編集することはお勧めしません。なぜなら、次回呼び出したときに上書きさcomposer updateれたり、composer リポジトリに新しいバージョンが表示されたりするからです。これは、テストのための簡単な修正です。フォークするか、独自のリポジトリを作成するか、方法を見つけてください。)

次に、このように Lumen で LaravelFacebookSdk を使用できるようになります

$app->get('/user', function(SammyK\LaravelFacebookSdk\LaravelFacebookSdk $fb){

    // Get basic info on the user from Facebook.
    try {

        $token = "your-access-token-here";

        $fb->setDefaultAccessToken($token);

        $response = $fb->get('/me?fields=id,name,email');
    } catch (Facebook\Exceptions\FacebookSDKException $e) {
        dd($e->getMessage());
    }

    // Convert the response to a `Facebook/GraphNodes/GraphUser` collection
    $facebook_user = $response->getGraphUser();

    var_dump($facebook_user);

});
于 2015-09-05T10:03:18.920 に答える
1

Lumen を初めて使用する方向け。セッション サービスを機能させるには、bootstrap/app.php55 行目から 61 行目で有効にする必要があります。

于 2015-04-25T13:39:12.687 に答える