HWIOAuthBundle、Facebookアクセストークンを使用してユーザーを手動で認証する方法は?

シルヴァン

Facebookとの接続にHWIOauthBundleを使用したWebサイト(Symfony2)があり、すべてが正常に機能しています。

現在、CordovaとIonicフレームワーク(AngularJS)を使用してiOSアプリを構築しようとしていますが、Facebookでユーザーを認証したいと思います。

  1. を使用して$cordovaFacebook、ユーザーを認証し、有効なFacebookアクセストークンを取得します。これで問題ありません。

  2. このアクセストークンを使用して、サーバー側のユーザーをHWIOauthBundleで認証しようとしています。

    GET http://..../login/facebook?code=MY_FACEBOOK_ACCESS_TOKEN
    
  3. symfonyはこのログで私のリクエストを拒否します:

    INFO - Matched route "facebook_login" (parameters: "_route": "facebook_login")
    INFO - Authentication request failed: OAuth error: "Invalid verification code format."
    

だから私の質問は:Facebook接続でフロントエンドとバックエンドの両方でユーザーを認証するにどうすればよいですか?

ありがとう:)

おじさん8

また、HWIOAuthBundleを使用してサーバー側のログインを実装する方法についても疑問に思っています。Webで解決策が見つからなかったため、ネットで読んだヒントに基づいて機能をコーディングしました。基本的に、あなたはしなければなりません:

  1. アプリでユーザーを認証する
  2. Facebookトークンを使用してサーバーにhttpリクエストを送信します。
  3. サーバー側で、トークンがFacebookアプリ用であるかどうかを確認し、ユーザーのFacebookIDを取得します。
  4. フェッチされたIDに基づいてDBからユーザーを取得します。

これが私のSymfonyコントローラーです:

public function getSecurityFbAction($token)
{
    // Get the token's FB app info.
    @$tokenAppResp = file_get_contents('https://graph.facebook.com/app/?access_token='.$token);
    if (!$tokenAppResp) {
        throw new AccessDeniedHttpException('Bad credentials.');
    }

    // Make sure it's the correct app.
    $tokenApp = json_decode($tokenAppResp, true);
    if (!$tokenApp || !isset($tokenApp['id']) || $tokenApp['id'] != $this->container->getParameter('oauth.facebook.id')) {
        throw new AccessDeniedHttpException('Bad credentials.');
    }

    // Get the token's FB user info.
    @$tokenUserResp = file_get_contents('https://graph.facebook.com/me/?access_token='.$token);
    if (!$tokenUserResp) {
        throw new AccessDeniedHttpException('Bad credentials.');
    }

    // Try to fetch user by it's token ID, create it otherwise.
    $tokenUser = json_decode($tokenUserResp, true);
    if (!$tokenUser || !isset($tokenUser['id'])) {
        throw new AccessDeniedHttpException('Bad credentials.');
    }
    $userManager = $this->get('fos_user.user_manager');
    $user = $userManager->findUserBy(array('facebookId' => $tokenUser['id']));

    if (!$user) {
        // Create user and store its facebookID.
    }

    // Return the user's JSON web token for future app<->server communications.
}

アプリのログインエラーを処理するために、Symfony \ Component \ HttpKernel \ Exception \ AccessDeniedHttpException例外をスローします。

もちろん、あなたが本当にHTTPを使用する必要がありあなたは賢明な情報を交換することになるので。

それが最善の方法かどうかはわかりませんが、うまく機能します。それが役に立てば幸い !

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

アクセストークンを使用してejabberdでユーザーを認証する方法

分類Dev

:REST SpringSecurity-新しいユーザーを手動で認証してアクセストークンを取得する

分類Dev

spartacusでユーザー/クライアントを手動で認証する方法は?

分類Dev

curlを使用してFacebookユーザーアクセストークンを生成する方法

分類Dev

API呼び出しでトークンを使用してユーザーを認証する方法は?

分類Dev

Laravel5.4でsocialiteを使用してFacebookユーザーアクセストークンを取得する

分類Dev

Facebook API:永続的なユーザー認証アクセストークンを取得する

分類Dev

Laravel JWT認証を使用してユーザーにルートへのアクセスを許可するにはどうすればよいですか?

分類Dev

RestFB:Facebookアプリを使用してユーザーのアクセストークンを取得する

分類Dev

Facebookのアカウントリンク機能を使用して、メッセンジャーユーザーが私のWebサイトの登録ユーザーであることを確認する方法は?

分類Dev

サードパーティのCAS認証を使用して、スタンドアロンのReactフロントエンドからdjangoバックエンド(同じドメイン、異なるポート)でユーザーを認証する方法は?

分類Dev

Spring SecurityとMarkLogicのJavaクライアントAPIを介してユーザーを認証する方法は?

分類Dev

OWIN OAuthBearerAuthenticationを使用してアクセストークンを認証する方法は?

分類Dev

ヘッダーで渡されたpingアクセスとユーザー名を使用してSpringセキュリティを使用して事前認証されたLDAPユーザーを認証するにはどうすればよいですか?

分類Dev

Django REST APIを使用してAndroidユーザーのPOSTリクエストを認証する方法は?

分類Dev

Socialite-Facebookを使用してログインしている現在のユーザーからアクセストークンを取得する方法

分類Dev

PHPを使用してTwitterAPIでユーザーアクセストークンとアクセスシークレットを取得する方法

分類Dev

Laravel 5のCodeceptionを使用した単体テストで認証ユーザーをモックする方法は?

分類Dev

Qtとアクセストークンを使用してGitHubで認証する方法

分類Dev

Parse認証済みユーザーを使用して非公開のAmazonS3バケットフォルダーへのアクセスを許可する方法

分類Dev

django drfでは、トークンを使用して認証されたユーザーが他のユーザーのデータにアクセスできますか?

分類Dev

アクティブな認証シナリオ。パートナー/ユーザーADFSからのトークンを使用してホーム/リソースADFSでトークンを発行する方法

分類Dev

ユーザー名とパスワードを使用して Google 認証トークンを取得する

分類Dev

ASP.NET MVCサイトでユーザーのWindows認証を使用し、バックエンドWCFサービスでAppPoolユーザーを使用してユーザーを偽装するにはどうすればよいですか?

分類Dev

laravel5.2認証システムでユーザーがログアウトしたらセッション変数をクリアする方法

分類Dev

Facebook GraphAPIを介してAccountKitアクセストークンを使用してFacebookユーザー情報を取得する

分類Dev

ユーザーがASP.NETCoreでトークンベース認証を使用してログインしているかどうかを確認します

分類Dev

エンドユーザー認証トークン(Firebase認証を使用)を確認してGoogle Cloud Runエンドポイントを呼び出す方法は?

分類Dev

Java-ユーザー認証を使用してファイルにアクセスする

Related 関連記事

  1. 1

    アクセストークンを使用してejabberdでユーザーを認証する方法

  2. 2

    :REST SpringSecurity-新しいユーザーを手動で認証してアクセストークンを取得する

  3. 3

    spartacusでユーザー/クライアントを手動で認証する方法は?

  4. 4

    curlを使用してFacebookユーザーアクセストークンを生成する方法

  5. 5

    API呼び出しでトークンを使用してユーザーを認証する方法は?

  6. 6

    Laravel5.4でsocialiteを使用してFacebookユーザーアクセストークンを取得する

  7. 7

    Facebook API:永続的なユーザー認証アクセストークンを取得する

  8. 8

    Laravel JWT認証を使用してユーザーにルートへのアクセスを許可するにはどうすればよいですか?

  9. 9

    RestFB:Facebookアプリを使用してユーザーのアクセストークンを取得する

  10. 10

    Facebookのアカウントリンク機能を使用して、メッセンジャーユーザーが私のWebサイトの登録ユーザーであることを確認する方法は?

  11. 11

    サードパーティのCAS認証を使用して、スタンドアロンのReactフロントエンドからdjangoバックエンド(同じドメイン、異なるポート)でユーザーを認証する方法は?

  12. 12

    Spring SecurityとMarkLogicのJavaクライアントAPIを介してユーザーを認証する方法は?

  13. 13

    OWIN OAuthBearerAuthenticationを使用してアクセストークンを認証する方法は?

  14. 14

    ヘッダーで渡されたpingアクセスとユーザー名を使用してSpringセキュリティを使用して事前認証されたLDAPユーザーを認証するにはどうすればよいですか?

  15. 15

    Django REST APIを使用してAndroidユーザーのPOSTリクエストを認証する方法は?

  16. 16

    Socialite-Facebookを使用してログインしている現在のユーザーからアクセストークンを取得する方法

  17. 17

    PHPを使用してTwitterAPIでユーザーアクセストークンとアクセスシークレットを取得する方法

  18. 18

    Laravel 5のCodeceptionを使用した単体テストで認証ユーザーをモックする方法は?

  19. 19

    Qtとアクセストークンを使用してGitHubで認証する方法

  20. 20

    Parse認証済みユーザーを使用して非公開のAmazonS3バケットフォルダーへのアクセスを許可する方法

  21. 21

    django drfでは、トークンを使用して認証されたユーザーが他のユーザーのデータにアクセスできますか?

  22. 22

    アクティブな認証シナリオ。パートナー/ユーザーADFSからのトークンを使用してホーム/リソースADFSでトークンを発行する方法

  23. 23

    ユーザー名とパスワードを使用して Google 認証トークンを取得する

  24. 24

    ASP.NET MVCサイトでユーザーのWindows認証を使用し、バックエンドWCFサービスでAppPoolユーザーを使用してユーザーを偽装するにはどうすればよいですか?

  25. 25

    laravel5.2認証システムでユーザーがログアウトしたらセッション変数をクリアする方法

  26. 26

    Facebook GraphAPIを介してAccountKitアクセストークンを使用してFacebookユーザー情報を取得する

  27. 27

    ユーザーがASP.NETCoreでトークンベース認証を使用してログインしているかどうかを確認します

  28. 28

    エンドユーザー認証トークン(Firebase認証を使用)を確認してGoogle Cloud Runエンドポイントを呼び出す方法は?

  29. 29

    Java-ユーザー認証を使用してファイルにアクセスする

ホットタグ

アーカイブ