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 访问令牌签名。在第 1039 行的 /usr/home/test/base_facebook.php 中抛出

这就是我获取应用程序访问令牌的方式:

$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" 形式的字符串

您需要使用的是第二部分,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 ://calibrate.be/labs/facebook-notification-api-php-sdk

于 2013-02-19T14:46:07.513 回答
0

您是否检查过 php.ini 中是否启用了 OAuth?

于 2012-08-31T20:04:08.440 回答
0

检查您使用的访问令牌在Facebook 的调试工具中是否有效- 您的代码中没有任何地方实际验证检索应用访问令牌的请求是否有效。

您还需要检查该应用程序是否

  1. 不在沙盒模式下(可能不相关,但值得检查)
  2. 未在高级设置中配置为“本机/桌面” - 该配置中不信任应用访问令牌
于 2012-08-31T20:22:34.840 回答