1

FOSFacebookBundleのデフォルトの実装は、クライアント側のフローを使用しています。私はそれを試しました、そしてそれは働きます。次に、サーバー側のフローを実装する必要があります。それから私はこれをします:

クリックするとハイパーリンクが表示され、アクションは次のようになります。

$client_id = $this->container->getParameter('fos_facebook.app_id');
$redirect_uri = urlencode($this->generateUrl('_security_check', array(), true));
$scope = implode(',', $this->container->getParameter('fos_facebook.permissions'));
$state = md5(uniqid(rand(), TRUE)); //CSRF protection
$this->getRequest()->getSession()->set('facebook_state', $state);

$oauthUrl = 'https://www.facebook.com/dialog/oauth?client_id='.$client_id.'&redirect_uri='.$redirect_uri.'&scope='.$scope.'&state='.$state;
return $this->redirect($oauthUrl);

ユーザーが[許可]をクリックすると、Facebookにリダイレクトされ、その後、アクションがクライアント側のアクションを処理するのと同じアクションであるアプリケーションにリダイレクトされます。

そして、エラーが返されます。現在のユーザーに関する情報を照会するには、アクティブなアクセストークンを使用する必要があります。

このエラーは、次の行が原因で発生します。

$me = $this->fbapi->api('/me');

Facebookのサーバー側フローを使用した正しい実装は何ですか?

4

1 に答える 1

0

ユーザーが[許可]をクリックすると、Facebookにリダイレクトされ、その後、アクションがクライアント側のアクションを処理するのと同じアクションであるアプリケーションにリダイレクトされます。

これが、サーバー側の認証フローの最初の3つのステップです。

ここで、4番目のステップも実行する必要があります:https ://developers.facebook.com/docs/authentication/server-side/

于 2012-09-24T07:45:31.767 に答える