Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook 带有PHP SDK的通知API_Facebook_Notifications - Fatal编程技术网

Facebook 带有PHP SDK的通知API

Facebook 带有PHP SDK的通知API,facebook,notifications,Facebook,Notifications,我正在尝试向我的一个用户发送通知(https://developers.facebook.com/docs/app_notifications/)但我无法用我的PHPSDK完成这项工作 我正在使用以下代码: $data = array( 'href'=> 'https://apps.facebook.com/MY_APP/', 'access_token'=> $app_token, 'template'=> 'test' ); $sendnotific

我正在尝试向我的一个用户发送通知(https://developers.facebook.com/docs/app_notifications/)但我无法用我的PHPSDK完成这项工作

我正在使用以下代码:

$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);
我做错了什么


访问令牌有一个问题,如果我在sode中直接使用访问令牌,它现在可以工作了

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

有人知道应用程序访问令牌持续多长时间吗?

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

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

检查您使用的访问令牌是否有效-您的代码中没有任何地方实际验证检索应用程序访问令牌的请求是否有效

此外,您还需要检查应用程序是否同时

  • 不在沙箱模式下(可能不相关,但值得检查)
  • 未在高级设置中配置为“本机/桌面”-该配置中不信任应用访问令牌

  • 检查您正在使用的访问令牌是否有效-您的代码中没有任何地方实际验证检索应用程序访问令牌的请求是否有效

    此外,您还需要检查应用程序是否同时

  • 不在沙箱模式下(可能不相关,但值得检查)
  • 未在高级设置中配置为“本机/桌面”-该配置中不信任应用访问令牌

  • 这是使用Facebook PHP SDK V3.2.0时设置应用程序访问令牌的正确方法:

        $this->_objFacebook->setAccessToken($this->_objFacebook->getAppId().'|'.$this->_objFacebook->getAppSecret());
    

    这是使用Facebook PHP SDK V3.2.0时设置应用程序访问令牌的正确方法:

        $this->_objFacebook->setAccessToken($this->_objFacebook->getAppId().'|'.$this->_objFacebook->getAppSecret());
    

    问题是var$app\u令牌是一个字符串,格式为$app\u token=“access\u token=YOUR\u app\u access\u token”

    您需要使用的是第二部分,即您的\u APP\u ACCESS\u令牌,因此,在将$APP\u令牌用作有效令牌之前,必须删除字符串“ACCESS\u 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);
    

    希望它能有所帮助。问题是var$app\u令牌是一个字符串,格式为$app\u token=“access\u token=您的\u app\u access\u token”

    $accessToken = $appId . '|' . $secret;
    $params = array(
                'access_token' => $accessToken,
                'href' => $canvasPage,
                'template' => $message,
            );
    $facebookObject->api('/' . $userId . '/notifications/', 'post', $params);
    
    您需要使用的是第二部分,即您的\u APP\u ACCESS\u令牌,因此,在将$APP\u令牌用作有效令牌之前,必须删除字符串“ACCESS\u 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);
    
    希望能有帮助

    $accessToken = $appId . '|' . $secret;
    $params = array(
                'access_token' => $accessToken,
                'href' => $canvasPage,
                'template' => $message,
            );
    $facebookObject->api('/' . $userId . '/notifications/', 'post', $params);
    
    这对我有用。 参考:

    这对我有用。
    参考:

    它没有处于沙箱模式,配置为web。等等,您是否只是将file\u get\u内容的结果传递到一个变量中并直接使用它?这不也是在令牌本身之前返回一个额外的字符串吗?它不是在沙箱模式下并配置为web。等等,您只是将file\u get\u内容的结果传递到一个变量中并直接使用它吗?这不也是在标记本身之前返回一个额外的字符串吗?