将旧 Auth 用户转换为增强 Auth 用户
Posted
技术标签:
【中文标题】将旧 Auth 用户转换为增强 Auth 用户【英文标题】:Converting older Auth users to Enhanced Auth users 【发布时间】:2012-03-06 22:57:58 【问题描述】:我最近遇到了老用户的问题。这是一个很难测试的场景。当我试图强制老用户使用增强型身份验证对话框将应用程序添加到他们的时间线时,他们会遇到错误。我应该指出,对于新用户来说一切正常。
旧用户身份验证很好,但如果您尝试时间轴操作,他们会收到 #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,所以我真的不知道问题是什么,就像我说的,很难测试。关于问题/解决方案可能是什么的任何想法?有没有更好的方法来做到这一点?
【问题讨论】:
【参考方案1】:他们进入重定向循环是因为这个表达式:
if(!array_key_exists('publish_actions', $permissions['data'][0]) )
总是评估为 true。如果您弄清楚如何正确检查权限,它应该可以工作。
也就是说,在我的应用程序中,我从不允许发生重定向循环。如果用户不授予权限,她将被重定向到解释我们为什么请求此类权限的页面(带有返回授予权限的按钮)。如果她已经决定不想授予应用程序权限,那么再次将她重定向到同一件事是没有意义的。
【讨论】:
以上是关于将旧 Auth 用户转换为增强 Auth 用户的主要内容,如果未能解决你的问题,请参考以下文章
使用firebase中的signInWithRedirect将匿名用户转换为新用户
如何使用 AppSync GraphQL 转换为双向一对多 @connection 执行字段级别 @auth?
如何使用 AppSync GraphQL 转换为一对多 @connection 执行 @auth?
如何将 Azure OpenIdConnect OWIN 中间件 Cookie Auth 转换为 SPA 应用程序的 JavaScript JWT?