【问题标题】:Facebook PHP throwing exception "(#803) Some of the aliases you requested do not exist"Facebook PHP 抛出异常“(#803)您请求的某些别名不存在”
【发布时间】:2011-08-19 01:43:03
【问题描述】:

我有一个有效且经过身份验证的用户,但是当从我们的 PHP 网络应用程序发布到他们的墙上时,它返回:

致命错误:Uncaught 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 认为该用户不存在?

【问题讨论】:

  • 与我们分享您的代码怎么样?您要随请求发送哪些字段?
  • 包含的代码 - 感谢您的提示。

标签: php facebook facebook-graph-api


【解决方案1】:

我遇到了这个问题,后来我意识到我将数据库中的 uid 保存为 integer,但是,新的 facebook 个人资料有很长的 uid,例如:100004409446248,这不是我可以保存的值作为我的mysql数据库中的integer,我将其更改为将其视为varchar,所以现在没有问题了

【讨论】:

  • 你为什么不直接使用 BIGINT 而不是 VARCHAR?
  • a BIGINT 肯定会覆盖上面的 ID。但是,Facebook 文档将用户 ID 记录为“数字字符串”,其他 ID(专辑、应用程序、cmets)记录为“字符串”,因此我将使用字符串存储而不是数字存储。可能某些 ID 具有 0 前缀,使用数字存储会忽略这些前缀。 developers.facebook.com/docs/graph-api/reference/user
  • 这声称无符号 64 位就足够了,尽管不是官方文档。 stackoverflow.com/questions/7138119/…
【解决方案2】:

这个问题Getting list of Facebook friends with latest API建议

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

【讨论】:

  • 我什至没有尝试任何复杂的东西,只是尝试发布到用户流。他们为我们提供了 publish_stream 和离线访问权限。
【解决方案3】:

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

代码:

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

我将 get_str 用于 facebook_id,问题就消失了。

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多