请帮忙!几天来我一直在努力解决这个错误,我不能为我的生活弄清楚。我正在使用facebook connect并使用他们的api方法users_getInfo获取“contact_email”属性。
问题在于,当我执行这个PHP文件时,我收到此错误:“不能在...中使用字符串偏移作为数组”。此错误特指这一行代码:$ firstName = $ user_details [0] ['contact_email'];
我认为这是因为user_getInfo方法没有返回任何结果......但是,关于这一切最荒谬的部分是,我可以连续执行几十次以下的代码SUCCESSFULLY没有上述错误,然后随机而不改变任何代码,我会突然遇到这个错误,在这种情况下它会开始给我一个错误几十次,然后AGAIN没有任何代码更改,再次开始执行成功。
无论我提取的属性如何,都会发生这种奇怪的行为..(contact_email,first_name,last_name等)。我正在运行php 5.2.11。有什么我想念的吗?
请帮助!
include_once'site / fbconnect / config.php'; //定义了$ api_key和$ secret。 include_once'site / facebook-platform / client / facebook.php'; 全球$ api_key,$ secret; $ fb =新Facebook($ api_key,$ secret); $ FB-> require_login(); $ fb_user = $ FB-> get_loggedin_user();
$ user_details = $ FB-> api_client-> users_getInfo($ fb_user,阵列( 'last_name的', '如first_name', 'CONTACT_EMAIL'));
$电子邮件= $ user_details [0] [ 'CONTACT_EMAIL'];
$的firstName = $ user_details [0] [ '如first_name'];
$的lastName = $ user_details [0] [ '姓氏'];
答案 0 :(得分:1)
使用facebook php客户端API我也收到了该错误,但我的错误与检查用户是否是使用friends_areFriends php方法的朋友有关。
// $ results_array = $ facebook-> api_client-> friends_areFriends($ fb_user,$ selected_friend_uid); // $ answer = $ results_array [0] ['are_friends'];
当我分配$ result时,我会收到此错误,“不能将字符串偏移量用作数组”,而上面的friends_areFriends方法显然失败了很多。我的解决方案是创建一个运行该代码的for循环,然后检查$ answer以查看它是否是使用php方法is_array()的数组,如果不是则再次执行方法调用。在让它失败之前,我的循环是10次尝试。最后,这项检查严重降低了我的Facebook应用程序的性能。相反,我删除了friends_areFriends api调用alltogather,我的facebook应用程序性能又好又快。
如果结果不是数组,您可以实现类似的功能,允许该方法重试自己。我认为问题出在facebook的一边,有时它们被淹没,请求无法成功完成。我提醒你不要重试超过5次尝试,因为如果你做了永久循环,请放心,他们会禁止你使用Facebook API充斥它,所以要小心。