9

これは私を夢中にさせています>=(

$ facebook-> getUser()はうまく機能することもありますが、0を返すこともあります

これが私のコードです: require 'fbapi/facebook.php';
$facebook = new Facebook(array(
'appId' => 'xxx',
'secret' => 'xxxxx',
));
$user = $facebook->getUser();

appIdsecretは正しいものです。

getUserが時々0を返す理由はこれである可能性があります???

4

5 に答える 5

1

それはおそらくFacebook側の何かです(開発者はしばらく前にこれを経験しました)。nullまたは0を返す場合$userは、ログインURL(必要なもの)に再ルーティングするだけです。再び0を返す可能性は最小限です(彼らの側にバグがあるか、あなたが投稿したものよりもあなたのコードに多くのものがある場合を除いて)。

于 2011-08-29T06:36:55.493 に答える
1

同様の問題に遭遇しました。$facebook->getUser() は 0 を返し、ユーザーが実際にログインしていないときに有効なユーザー ID を返すことがあり、グラフ API を呼び出そうとすると致命的な Oauth エラーが発生しました。私はついにこの問題を解決しました。それが正しい方法かどうかはわかりませんが、うまくいきます。コードは次のとおりです。

<?php
include 'includes/php/facebook.php';
$app_id = "APP_ID";
$app_secret = "SECRET_KEY";
$facebook = new Facebook(array(
    'appId' => $app_id,
    'secret' => $app_secret,
    'cookie' => true
));

$user = $facebook->getUser();

if ($user <> '0' && $user <> '') { /*if valid user id i.e. neither 0 nor blank nor null*/
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) { /*sometimes it shows user id even if user in not logged in and it results in Oauth exception. In this case we will set it back to 0.*/
error_log($e);
$user = '0';
}
}
if ($user <> '0' && $user <> '') { /*So now we will have a valid user id with a valid oauth access token and so the code will work fine.*/
echo "UserId : " . $user;

$params = array( 'next' => 'http://www.quickbite.co.in' );
echo "<p><a href='". $facebook->getLogoutUrl($params) . "'>Logout</a>";

$user_profile = $facebook->api('/me');
echo "<p>Name : " . $user_profile['name'];
echo "<p>";
print_r($user_profile);

} else {/*If user id isn't present just redirect it to login url*/
header("Location:{$facebook->getLoginUrl(array('req_perms' => 'email,offline_access'))}");
}

?>
于 2011-11-11T08:34:10.563 に答える
1

PHPヘッダーを入力するだけです

header('P3P: CP="NOI ADM DEV COM NAV OUR STP"');
于 2012-07-09T11:20:21.700 に答える
0

だから私は同じ問題に苦しんでいて、getUser()常に0を返しました。まったく意味がありませんでした。NginXエラーログに次のエラーが表示されていました'CSRF状態トークンが提供されたものと一致しません'。次に、SDKのデバッグを開始getAccessTokenFromCode()し、Facebookサーバーから適切なアクセストークンを取得できないように絞り込みました。これはSSL証明書と関係があります。

下記のリンクの解決策は私にとって問題を解決しました。

https://github.com/facebook/php-sdk/issues/272

また、sdkにバンドルされている「fb_ca_chain_bundle.crt」ファイルを、Facebookクラスファイルが配置されているフォルダーにコピーする必要がある場合もあります。やった。

これが理にかなっていることを願っています。

于 2011-09-30T07:51:06.903 に答える
0

この問題の簡単な解決策を見つけました..これは、facebook クラスがサーバー上でセッション変数を設定または追加できない場合に発生します..

私のコードでは、facebook クラスを含める前に session_write_close() を使用したため、このエラーが発生しました..「CSRF 状態トークンが提供されたものと一致しません。」..

次に、コードの最後に session_write_close() を移動し、最終的に機能しました.. :)

于 2012-01-13T14:15:34.460 に答える