1

Web サイトで Facebook にログインしようとしていますが、問題が発生しました。

このクラスを使用して、PHP で Facebook ログインを使用しました。

login.php次のコードを含むPHPファイルを自分のサイトに作成しました

$facebook = new FacebookLogin(APP_ID, APP_SECRET);
$user = $facebook->doLogin();
// then initialize the SESSION variables here using $user info
header("Location: ' . $url);

ここでの問題は、 get 引数をに渡したいことでlogin.phpあり、この引数から、リダイレクト先の $url を知ることができます。しかし、クラスはリダイレクト呼び出しを行っているため、login.php の get 引数が失われているため、次の行でコンストラクターFacebookLoginに login.php 引数を追加することにしました。$this->urlFacebookLogin

$this->my_url = 'http://' . $_SERVER['SERVER_NAME'] .  $_SERVER['PHP_SELF'] . '?' . $_SERVER['QUERY_STRING'];

問題は、これも のように機能しないverifyLogin()ことです。URL が正しくないため、この行は空の結果を返します。

$result = @file_get_contents(self::TOKEN_URL . '?' . http_build_query($data));

そして、それはaccess_token

それで、あなたはどう思いますか?

単純に、ユーザーがリンクをクリックして Facebook でログインする方法が必要ですが、ユーザーに戻る前に、PHP で自分のコードを渡し、ユーザーが get 引数をクリックして指定した URL にリダイレクトしたいと考えています。

申し訳ありませんが、ばかげているかもしれませんが、この問題を解決するために多くの時間を費やしており、数時間後に締め切りがあります.

あなたの助けに感謝

4

1 に答える 1

3

PHP-SDKを使用すると、達成しようとすることは簡単です。

$facebook = new Facebook(array(
  'appId' => 'YOUR_APP_ID',
  'secret'=> 'YOUR_APP_SECRET'
));

$loginURL = $facebook->getLoginUrl(array(
  //'redirect_uri'=>'URL_WHERE_USER_WILL_BE_LANDED_AFTER_LOGIN' 
));

header("Location: {$loginURL}");

ユーザーが承認されて戻ってきた後のステップのためにアプリケーションにデータを渡したい場合は、 のredirect_uriパラメーターで提供される URL の URL 引数の一部としてそれを渡しますgetLoginUrl

したがって、たとえば、現在の URL ではなくその URL にリダイレクトされるように渡す場合 (承認前) http://my.app.com/?link_to_visit=some_linkredirect_url

後で次のことができます。

$facebook = new Facebook(array(
  'appId' => 'YOUR_APP_ID',
  'secret'=> 'YOUR_APP_SECRET'
));

$userId = $facebook->getUser();
$accessToken = $facebook->getAccessToken();

$linkToVisit = $_REQUEST['link_to_visit'];

ところで、人類のために、プラットフォームのすべての変更(そしてそれらは巨大です)に従う公式のFacebook PHP-SDKを支持して、数年前に評判が不明な誰かによって書かれた愚かなクライアントを使用しないでください...

于 2012-06-22T20:43:25.840 に答える