2011-05-05 51 views
10

我有一个有效的和验证的用户,但是从我们的PHP Web应用程序发布到他们的墙上,当它返回:Facebook的PHP抛出异常“(#803)一些你的要求不存在的别名”

致命错误:未捕获的OAuthException:(#803)您请求的某些别名不存在:xxxxxxxxxxxxx“,”name“:”xxxxxxx

我有24个其他用户可以发帖而没有问题。我可以看到要https://graph.facebook.com/xxxxxxxxxxxxx

这里用户存在是代码:

$fb_user_id = $row[0]; // loaded from DB 
    $facebook_token = $row[1]; // loaded from DB 

    $result = $facebook->api('/' . $fb_user_id. '/feed/', 
           'post', 
           array('access_token' => $facebook_token, 
            'message' => $postMessage, 
            'name' => 'Product name', 
            'caption' => 'Accomplished!', 
            'link' => 'http://www.xxxxxxx.com/', 
            'description' => $postMessage, 
            'picture' => 'http://www.xxxxxxx.com/images/productImage.png')); 

为什么Facebook的API认为这用户不存在任何想法?

+0

如何与我们分享您的代码?你要发送什么字段? – ifaour 2011-05-05 08:13:06

+0

包含的代码 - 感谢您的提示。 – 2011-05-05 23:45:18

回答

26

我这个问题,后来我意识到我是在我的数据库作为integer保存UID,但是,新的Facebook个人主页有很长的UID,如: 100004409446248,这不是一个值,我可以保存为我的MySQL数据库的integer,我改变了这种把它当作一个varchar,所以现在没有问题

+2

为什么你不使用'BIGINT'而不是VARCHAR? – Noam 2014-02-10 14:11:05

+4

'BIGINT'肯定会覆盖上面的ID。但是,Facebook文档注意到用户ID是“数字字符串”,其他ID(相册,应用程序,注释)被记录为“字符串”,所以我会使用字符串存储而不是数字存储。可能有些ID有0个前缀,这些前缀会被数字存储忽略。 https://developers.facebook.com/docs/graph-api/reference/user/ – Daniel 2014-02-10 14:17:08

+0

这声称一个未签名的64位就够了,虽然不是官方文档。 http://stackoverflow.com/questions/7138119/saving-facebook-id-as-int-or-varchar – Noam 2014-02-10 14:40:51

1

这个问题Getting list of Facebook friends with latest API表明

$friends = $facebook->api('/me/friends');

+0

我甚至没有尝试任何复杂的东西,只是试图发布到用户流。他们给了我们publish_stream和离线访问。 – 2011-05-05 23:46:08

0

我写了两个库例程用于获取整数查询字符串。与Dainel使用intval()函数时的经验类似,我得到一个无效的Facebook ID导致该错误。

代码:

function get_int($field) { 
    $value = 0; 
    if(isset($_GET[$field])) $value = intval($_GET[$field]); 
    return $value; 
} 

我用的却走了facebook_id和问题get_str。

function get_str($field) { 
    $value = ''; 
    if(isset($_GET[$field])) $value = $_GET[$field]; 
    return $value; 
} 
-3

将APP ID定义为整数,而不是字符串!