我最近遇到了老用户的麻烦。这是一个很难测试的场景。当我尝试强制他们使用增强型身份验证对话框将应用程序添加到其时间线时,旧用户会收到错误。我应该说一切都适合新用户。
旧用户进行身份验证很好,但是如果您尝试时间轴操作,则会出现#200错误,说明需要使用publish_actions。这是预期的。所以我试图解决这个问题是1.)检查用户的join_date到我的应用程序。如果那个日期是在我制作增强型开关之前,那么2.)我检查他们的权限。
如果他们没有publish_actions,我会这样做:
if(!array_key_exists('publish_actions', $permissions['data'][0]) ) {
$gotoURL = APP_URL."?page=home";
$cancelURL = APP_URL."?page=terms&cancel=1";
$url = $facebook->getLoginUrl(array('canvas' => 1, 'fbconnect' => 0,
'scope' => 'publish_actions',
'redirect_uri' => $gotoURL,
'cancel_url' => $cancelURL));
echo "<html><body><script>window.parent.location='".$url."';</script></body></html>";
exit;
}
出于某种原因,这似乎将它们置于重定向循环中。我有最新的php sdk,所以我真的不知道问题是什么,就像我说的那样,很难测试。关于问题/解决方案可能是什么的任何想法?有更好的方法吗?
答案 0 :(得分:0)
他们进入重定向循环,因为这个表达式:
if(!array_key_exists('publish_actions', $permissions['data'][0]) )
始终评估为 true 。如果你弄清楚如何正确检查权限,它应该工作。
那就是说,在我的应用程序中,我从不允许重定向循环发生。如果用户未授予权限,则会将她重定向到一个页面,该页面解释了我们请求此类权限的原因(使用按钮返回授予权限)。如果她已经决定不想授予应用程序许可,那么将她再次重定向到同一件事并没有多大意义。