1

ユーザーの 1 人 (https://developers.facebook.com/docs/app_notifications/) に通知を送信しようとしていますが、PHP SDK でこれを機能させることができません。

私はこのコードを使用しています:

$data = array(
    'href'=> 'https://apps.facebook.com/MY_APP/',
    'access_token'=> $app_token,
    'template'=> 'test'
);
$sendnotification = $facebook->api('/USER_ID/notifications', 'post', $data);

そして、これは私が返すエラーです:

致命的なエラー: OAuthException がキャッチされていません: OAuth アクセス トークンの署名が無効です。/usr/home/test/base_facebook.php の 1039 行目にスローされます

これは、アプリ アクセス トークンを取得する方法です。

$APPLICATION_ID = "MY_APP_ID";
$APPLICATION_SECRET = "MY_APP_SECRET";

$token_url =    "https://graph.facebook.com/oauth/access_token?" .
                "client_id=" . $APPLICATION_ID .
                "&client_secret=" . $APPLICATION_SECRET .
                "&grant_type=client_credentials";
$app_token = file_get_contents($token_url);

私は何を間違っていますか?


access_token に問題がありました。sode でアクセス トークンを直接使用すると、現在は機能します。

'access_token'=> 'K3Rds2y0cGm...',

アプリ アクセス トークンの有効期間を知っている人はいますか?

4

5 に答える 5

5

これは、Facebook PHP SDK V3.2.0 を使用する場合にアプリケーション アクセス トークンを設定する正しい方法です。

    $this->_objFacebook->setAccessToken($this->_objFacebook->getAppId().'|'.$this->_objFacebook->getAppSecret());
于 2012-09-02T16:34:14.177 に答える
4

問題は、var $app_token が $app_token = "access_token=YOUR_APP_ACCESS_TOKEN" の形式の文字列であることです。

使用する必要があるのは 2 番目の部分、YOUR_APP_ACCESS_TOKEN です。したがって、$app_token を有効なトークンとして使用する前に、文字列「access_token=」の最初の部分を削除する必要があります。

解決:

$APPLICATION_ID = "MY_APP_ID";
$APPLICATION_SECRET = "MY_APP_SECRET";

$token_url =    "https://graph.facebook.com/oauth/access_token?" .
                "client_id=" . $APPLICATION_ID .
                "&client_secret=" . $APPLICATION_SECRET .
                "&grant_type=client_credentials";
$app_token = file_get_contents($token_url);
$app_token = str_replace("access_token=", "", $app_token);

$data = array(
    'href'=> 'https://apps.facebook.com/MY_APP/',
    'access_token'=> $app_token,
    'template'=> 'test'
);
$sendnotification = $facebook->api('/USER_ID/notifications', 'post', $data);

それが役に立てば幸い

于 2012-09-14T04:47:53.840 に答える
3
$accessToken = $appId . '|' . $secret;
$params = array(
            'access_token' => $accessToken,
            'href' => $canvasPage,
            'template' => $message,
        );
$facebookObject->api('/' . $userId . '/notifications/', 'post', $params);

これは私にとってはうまくいきます。参照: http :// calibration.be/labs/facebook-notification-api-php-sdk

于 2013-02-19T14:46:07.513 に答える
0

使用しているアクセストークンがFacebookのデバッグツールで機能することを確認します。アプリのアクセストークンを取得するリクエストが機能したことを実際に確認しているコードはどこにもありません。

また、アプリが両方であることを確認する必要があります

  1. サンドボックスモードではありません(関連性がない可能性がありますが、確認する価値があります)
  2. 詳細設定で「ネイティブ/デスクトップ」として構成されていません-アプリアクセストークンはその構成で信頼されていません
于 2012-08-31T20:22:34.840 に答える
0

php.iniでOAuthが有効になっているかどうかを確認しましたか?

于 2012-08-31T20:04:08.440 に答える