如何将用户重定向到身份验证对话框?

Posted

技术标签:

【中文标题】如何将用户重定向到身份验证对话框?【英文标题】:How to redirect a user to Auth Dialog? 【发布时间】:2011-11-18 16:45:44 【问题描述】:

我按照步骤here

而且我的应用程序不会重定向用户

$app_id = APP_ID;
$canvas_page = APP_LINK;

$auth_url = "http://www.facebook.com/dialog/oauth?client_id=". $app_id . "&redirect_uri=" . urlencode($canvas_page) . "&scope=email,read_stream";

echo "<script> top.location.href='" . $auth_url . "'</script>";

PS:我成功地用&lt;fb:redirect&gt; 重定向了用户,但由于FBML 在几个月内将不受支持,我想找到另一种方法,“top.location.href”应该可以工作:(

【问题讨论】:

您在 URL 字符串中的 client_id 后面缺少一个 =。 【参考方案1】:

您可能需要一个分号来执行代码。此外,等号是必要的。 (感谢David Barker)

$app_id = APP_ID;
$canvas_page = APP_LINK;

$auth_url = "http://www.facebook.com/dialog/oauth?client_id=". $app_id . "&redirect_uri=" . urlencode($canvas_page) . "&scope=email,read_stream";

echo "<script> top.location.href='" . $auth_url . "';</script>";

当你这样做时你会得到什么:echo "&lt;script&gt; alert('".$auth_url."');&lt;/script&gt;";

另外,在 php 中更简单的方法是这样的:

$app_id = APP_ID;
$canvas_page = APP_LINK;

$auth_url = "http://www.facebook.com/dialog/oauth?client_id". $app_id . "&redirect_uri=" . urlencode($canvas_page) . "&scope=email,read_stream";

echo <<<EOT
  <script>
    top.location.href="$auth_url";

    //checking the value of auth_url to see if that is the reason redirect is not happening.
    if (window.console)  
        console.log("$auth_url"); 
       else  
        alert("$auth_url"); 
      
  </script>
EOT;

使用 heredoc 语法,您不必转义任何内容,您可以在其中使用单引号和双引号,并且变量在您的字符串中本质上被替换。 ;)

【讨论】:

感谢您的回复。但是这些解决方案中的任何一个都对我有用:(在 javascript 日志中我得到“错误:a93039401447_top 未定义”。我不明白为什么 Facebook 将“top.location.href”替换为“a93039401447_top.location.href”.. . PS:我在一个facebook应用程序中 事实上,就我而言(使用 FBML/FBJS 的应用程序),Facebook 自己替换了所有“标准”javascript。而且我认为没有等同于重定向人..(不允许..) 只要您的第一页本身不是重定向(如在 301 重定向中),您就应该很好。拉起 auth dialog/get 和 auth token 的推荐方法是执行 top.location.href javascript 重定向。您的代码可能还有其他问题吗? 事实上,如果我将应用程序的类型(在应用程序设置中)从“FBML”更改为“iframe”,这将有效。但如果我的应用程序是“FBML”,则 javascript 会被 Facebook 重写,我无法使用此重定向。我认为这就是他们创建 (用于 fbml 应用程序)的原因。所以目前我将保留 ,并且,有几天,我将切换到 iframe 应用程序。感谢您的帮助。 当然,我很高兴。您应该知道他们很快就会弃用 FBML,并且您的应用程序可能无法运行更长时间。 ;) 干杯和快乐编码!

以上是关于如何将用户重定向到身份验证对话框?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Firebase 身份验证和托管将登录用户重定向到子域?

带有访客和身份验证中间件的 Nuxt 身份验证将经过身份验证的用户在刷新时重定向到错误的页面

身份验证后如何将用户重定向回同一页面?

如何在通过 Redux 操作进行身份验证后重定向用户?

如何将动态重定向 URL 传递到 Azure 应用注册身份验证过程(.NET 框架)?

如果用户已经使用 Vue 和 Firebase 身份验证登录,如何自动重定向用户?