Facebook apprequest错误

时间:2012-04-18 03:58:11

标签: facebook-php-sdk facebook-app-requests

大家好! 我有apprequests的问题。 当我使用请求对话框时,我有请求ID的响应。这是代码:

<html xmlns:fb="http://www.facebook.com/2008/fbml">
<body>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<div id="fb-root"></div>
<script>

FB.init({appId:'400884386588720', xfbml:true, cookie:true});

var too = new Array('100003484704320');
function send() {
    FB.ui({
        method:'apprequests',
        message:'http://wasm.ru',
        to:too
    }, function (response) {
        var request = response.request;
        var request_id = request + '_' + too[0];
        console.log(request_id);
    });
}
</script>
</body>
<input type="button" onclick="send(); return true;" value='Request'>
</html>

但用户无法看到此请求!当facebook页面刷新时,我可以看到通知,但加载后它会消失。

当我尝试使用Graph Api时,我有一个错误:     [错误] =&gt; stdClass对象                 (                      [message] =&gt; (#200)param ID中的所有用户必须已接受TOS                      [type] =&gt; OAuthException                      [code] =&gt; 200                 )

以下是代码:

$token_url = "https://graph.facebook.com/oauth/access_token?" .
                    "client_id=" . $this->app_id.
                    "&client_secret=" . $this->secret .
                    "&grant_type=client_credentials";
$app_token = $this->request($token_url, 'POST');
$app_token = explode('=', $app_token);
$app_token = $app_token[1];

$message="Message with space and with link - http://wasm.ru";
$message = urlencode($message);

$url = 'https://graph.facebook.com/'.$user.'/apprequests?'.'message='.$message.'&access_token='.$app_token.'&method=post';
$res = $this->request($url, 'POST');

请求函数:

 $ch = curl_init();
    $options = array();
    $options[CURLOPT_URL] = $url;
    $options[CURLOPT_SSL_VERIFYPEER] = false;
    $options[CURLOPT_RETURNTRANSFER] = true;

    if($method == 'get') {
        $options[CURLOPT_HTTPGET] = true;
    } else {
        $options[CURLOPT_CUSTOMREQUEST]= 'POST';
    }
    curl_setopt_array($ch, $options);
    $response = curl_exec($ch);
    if($action == 'access_token'){
        return $response;
    }
    $response = json_decode($response);
    return $response;

我找不到错误......帮忙! 感谢。

1 个答案:

答案 0 :(得分:1)

您收到的错误消息(“param ID中的所有用户必须已接受TOS”)是因为您尝试将应用生成的请求发送给未与您的应用连接的用户。

请参阅此处的开发人员文档https://developers.facebook.com/docs/requests/#app_to_user

随请求对话框和应用生成的请求发送的请求不同,您无法使用应用生成的请求邀请用户访问您的应用。