0

私はphpfacebookライブラリを使用するWebサイトを構築しています。すべてのページの冒頭で、$ facebook-> getLoginStatusUrl($ params)関数を使用して、ユーザーがFacebookにログインしているかどうか(またはログインしようとしているかどうか)を確認しています。私が抱えている問題は、その関数をチェックする唯一の実際の方法は、ユーザーが彫像に基づいてページにリダイレクトされるようにすることです(その関数によって返されるURLにユーザーをリダイレクトすることによって)。file_get_contentsまたはcURLは、その関数によって返されるURLがhttpsを使用しているため、使用できません。とにかく、サーバー側のメソッドでそのURLのコンテンツを取得できますか?それとも、リダイレクトを使用してこれを行う絶対的な唯一の方法ですか?私はこれを(Javascriptを介して)クライアント側のアクションにしたくないと思います。何か案は?

4

2 に答える 2

0

FacebookのgetUser()関数を使用して、ユーザーがログに記録され、Webに許可を与えているかどうかを確認できます。その後、getLoginUrl()またはgetLogoutUrl()を使用して、ユーザーに正しいボタンを表示できます。

$user = $facebook->getUser();    

if (!$user)
{
  $loginUrl = $facebook->getLoginUrl(array(
    'redirect_uri' => REDIRECT_URL,
    'scope' => APP_PERMS,
    'display' => 'page'
  ));

  //do something with $loginUrl, for example:
  echo '<a href="'.$loginUrl.'">Login with facebook</a>';
}
else
{
  //check that this user is still valid
  $realUser = $facebook->api('me');

...

この関数の詳細については、Facebookのドキュメントをご覧ください。

https://developers.facebook.com/docs/reference/php/

于 2012-10-24T13:51:18.240 に答える
0

とにかく、サーバー側のメソッドでそのURLのコンテンツを取得できますか?

クライアントがFacebookにログインするために使用するのはサーバーではなく、彼のブラウザーであるため、これは役に立ちません。

そのため、ユーザーがログインしているかどうかのチェックはブラウザで行う必要があります。これが、Facebookのドメインで設定されたCookieを読み取る唯一の方法であるため、ブラウザがFacebookにリダイレクトされる理由です。

私はこれを(Javascriptを介して)クライアント側のアクションにしたくないと思います。

リダイレクトがあるため、これはすでに一種のクライアント側のアクションです。

ユーザーがブラウザでFacebookにログインしているかどうかを、サーバーだけで把握する方法はまったくありません。

于 2012-10-24T15:50:34.460 に答える