0

Facebookでログインするための次のコードがあります。

// Include Facebook SDK

$this->facebook = new Facebook(array(
    'appId'  => 'APP ID',
    'secret' => 'APP SECRET',
    'cookie' => true
));

$uid = $this->facebook->getUser();
if($uid) {
    try {
        echo 'Done!';
    } catch (FacebookApiException $e) {
        echo $e;
        error_log($e);
    }
} else {
    $loginUrl = $this->facebook->getLoginUrl(array(
        'redirect_uri' => 'http://ogabrielsantos.com.br/dev/index.php?route=account/connect/facebook',
        'scope' => 'user_birthday'
    ));

    echo('<script>top.location.href = "' . $loginUrl . '";</script>');
}

更新 1

アプリを承認できますが、承認後、ログに記録されたユーザーを取得できず、リダイレクトすることはありません

http://ogabrielsantos.com.br/dev/index.php?route=account%2Fconnect%2Ffacebook&state=RANDOM STATE&code=RANDOM CODE#_=_

私が試してみました:

  • アプリをサーバーに入れます。
  • アプリの設定を確認します。すべてが正しいです。
  • url が設定とコードで同じかどうかを確認します。大丈夫;
  • 私の URL は正しく書かれています: http://ogabrielsantos.com.br/dev/index.php?route=account/connect/facebook;
  • アプリシークレットをリセットします。

何も機能しませんでした。

何が起こるかを確認できます:

http://ogabrielsantos.com.br/dev/index.php?route=account/connect/facebook

Facebook は、アプリがあなたのウェブサイトを取得することを許可するように求めますが、これは安全な情報です。

更新 2

次のコード:

$this->facebook = new Facebook(array(
    'appId'  => $this->connect->config->get('facebook_api_key'),
    'secret' => $this->connect->config->get('facebook_app_secret'),
    'cookie' => true
));

$uid = $this->facebook->getUser();

echo'<pre>';
print_r($this->facebook);
echo'</pre>';
exit;

戻り値:

Facebook Object
(
    [sharedSessionID:protected] => 
    [appId:protected] => APP ID
    [appSecret:protected] => APP SECRET
    [user:protected] => 0
    [signedRequest:protected] => 
    [state:protected] => 
    [accessToken:protected] => APP ID|APP SECRET
    [fileUploadSupport:protected] => 
    [trustForwarded:protected] => 
)

accessTokenは間違っていると思います.andをパイプラインセパレータで返しAPP IDますSECRET.

更新 3:

今、私はコードを確認しますが、常に取得しますFatal error: Uncaught OAuthException: Error validating verification code

if(isset($_GET['code'])) {
    $api = $this->facebook->api('/oauth/access_token', array(
        'client_id' => APP ID,
        'redirect_uri' => 'http://ogabrielsantos.com.br/dev/index.php?route=account/connect/facebook',
        'client_secret' => APP SECRET,
        'code' => $_GET['code']
    ));

    echo'<pre>';
    var_dump($api);
    print_r($this->facebook->getUser());
    echo'</pre>';
    exit;
}

私はいくつかの質問を読みましたが、これは似ていますが、役に立ちません。

4

2 に答える 2

1

ローカルホストで作業していますか? はいの場合、おそらくそれが理由です。そうでない場合は、developers.facebook.com/apps/APP_ID でアプリの設定を確認してください。 1. コードに記述された URL と、アプリの設定にある URL を比較する必要があります。2. 別の理由として、アプリ設定の URL が正しく記述されていないことが考えられます。ページ タブ設定の URL の末尾に index.php を追加しなければならなかったことを覚えています。私のために働いた3.別のオプションは、新しいAPP_SECRETを取得してコードを更新することですこれらのオプションは私の個人的な経験からのものです。

于 2012-09-07T11:36:08.577 に答える