我正在调用FB图表api获取多个字段,例如姓名,性别,身份,家乡,电子邮件和生日。除生日字段外,其中每一个都一致地返回数据。它返回大约1次10次的数据。这是代码的一部分:
try {
$requestProfile = $fb->get("/me?fields=name,email,birthday,first_name,last_name,gender,hometown,age_range");
$profile = $requestProfile->getGraphNode()->asArray();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
}
$uid=$profile['id'];
$uname=$profile['name'];
$ufname=$profile['first_name'];
$ulname= $profile['last_name'];
$ugender=$profile['gender'];
$ubirthday = $profile['birthday']->date;
$uemail= $profile['email'];
$uhometown=$profile['hometown']['name'];
$urep = 100;
if ($ugender=="male")
{
$table="userdata_m";
}
else if ($ugender == "female")
{
$table="userdata_f";
}
$sql = "INSERT INTO $table (id,name,first_name,last_name,gender,birthday,email,hometown,rep)
VALUES ($uid,'$uname','$ufname','$ulname','$ugender','$ubirthday','$uemail','$uhometown',$urep) ";
这可能是我宣布我的$ ubirthday变量的方式吗?我知道生日是作为一个对象返回的,所以我就这样说了。为什么它有时会工作,有时不工作?感谢您抽出时间来解决这个问题。
修改
我接受了CBroe的建议并且实际上检查了我是否每次都得到FB的正确答复。我每次都在$ profile上做了一个var_dump,事实证明我总是从facebook上获得生日。 It looks like this.
事情是,我尝试使用$ profile ['birthday'] - >日期访问出生日期,并且每次都将其写入文本文件,但有时只能使用!我很确信这是我访问对象属性的方式,但我不知道它为什么只能在有时工作。任何帮助,将不胜感激。谢谢。
编辑2
所以我通过检查$ ubirthday = $ profile ['birthday'] - > date;来完成工作。第一次工作,如果没有,再次分配。似乎API在生日响应方面可能特别慢,或者数组的生日对象构建得最慢,所以第一次尝试将其分配给生日时是不可用的?这是代码:
$uid=$profile['id'];
$uname=$profile['name'];
$ufname=$profile['first_name'];
$ulname= $profile['last_name'];
$ugender=$profile['gender'];
$ubirthday = $profile['birthday']->date;
$uemail= $profile['email'];
$uhometown=$profile['hometown']['name'];
$urep = 100;
ob_start();
var_dump($profile);
$out = ob_get_clean();
if(!isset($ubirthday))
{
$file2 = fopen("test2.txt","w");
fwrite($file2,"was empty");
$ubirthday = $profile['birthday']->date;
fwrite($file2,$ubirthday);
fclose($filew);
}
事实上,ob_start(),var_dump($ profile)和ob_get_clean()函数是必须的,因为它一致地工作。 See this picture在前2条记录中,我没有完整的ob和var_dump函数,然后当我添加它们时,你可以看到接下来的5行是一致的,然后我再次删除它们再进行4次登录,然后我在最后一行再次添加它再次工作。任何php大师都可以解释为什么这些功能是必要的吗?我认为这将是非常有教育意义的。这对我来说似乎很奇怪。
ob和var_dump函数是否只需要花费足够的时间让api返回生日或者'birthday'对象来构建在数组中?谢谢。