将用户定向到Facebook登录页面而不询问权限

时间:2011-10-05 14:43:20

标签: facebook permissions oauth facebook-fbml

我正在尝试将用户重定向到Facebook登录页面,然后返回到我的应用程序,而不显示登录到应用程序页面。这可能吗?

我查看了由PHP-SDK自动生成的“next”参数,但似乎无法改变它。

无论如何都要做我正在寻找的事情?我想确保用户已登录,以便检查他们是否已对我的应用进行了操作,但如果他们尚未使用,则不希望他们使用。

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

他们必须首次接受权限。如果没有他们的知识/接受,Facebook永远不会让你获取用户的数据

答案 1 :(得分:2)

不,我认为无法修改 next 参数。我看到下一个参数(在PHP SDK中)的唯一地方是getLogoutUrl()函数,如 base_facebook.php 的源代码所示。并且该参数定义了注销后要去的URL。

对于 base_facebook.php 文件中的getLoginUrl(),我们有

 return $this->getUrl(
  'www',
  'dialog/oauth',
  array_merge(array(
                'client_id' => $this->getAppId(),
                'redirect_uri' => $currentUrl, // possibly overwritten
                'state' => $this->state),
              $params));

作为函数的最后一行,这显然意味着无论您尝试什么,都会显示oauth对话框。

如果您的应用不在Facebook上,那么您可以在Javascript中使用<fb:login-button>Login with Facebook</fb:login-button>,然后按照this url中的示例进行操作。即使您没有要求任何权限,您也会看到无法完全删除该对话。·
Javascript SDK的FB.login()方法也将打开auth对话框。
希望这会有所帮助。

答案 2 :(得分:0)

如果您使用的是php:

// Create our Application instance.
$facebook = new Facebook(array(
  'appId'  => $fbconfig['appid'],
  'secret' => $fbconfig['secret'],
  'cookie' => true
));

//Facebook Authentication part
$user = $facebook->getUser();

if (!$user) {
    // user is not logged on --> redirect to the login url
} else {
    // user is logged on you can do what you want
}
相关问题