[英]How do I log in using facebook PHP SDK without having to re-authenticate?
[英]Now how do I authenticate in Facebook's PHP SDK 3.0.0?
所以Facebook改变了认证流程。 再次。 PHP SDK 中的示例是:
$user = $facebook->getUser();
if ($user) {
try {
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
但是,现在我们如何对尚未通过身份验证的用户进行身份验证? 我们是否只是简单地创建一个else
语句并调用$facebook->getLoginUrl()
的结果?
此外,上面的示例给了我一个错误,因为对$facebook->getUser()
的调用返回了我的用户 ID,但是当我尝试调用$facebook->api('/me')
时我的应用程序崩溃了:
致命错误:未捕获的 OAuthException:必须使用活动访问令牌来查询有关当前用户的信息。 在第560行扔进/home/woohoobi/public_html/facebookv2/inc/facebook.php
有关如何验证未经身份验证的用户的任何帮助都会很棒。
当你这样做
$user = $facebook->getUser();
$user
不是 null 并不意味着您有有效的访问令牌来进行一些 API 调用。 这只是表示用户已登录。
要检查您是否有活动的访问令牌,一种方法是尝试进行 API 调用,就像您在问题中编写的代码一样:
require "facebook.php";
$facebook = new Facebook(array(
'appId' => YOUR_APP_ID,
'secret' => YOUR_APP_SECRET,
));
$user = $facebook->getUser();
if ($user) {
// The user is logged in
try {
$user_profile = $facebook->api('/me');
// Here : API call succeeded, you have a valid access token
} catch (FacebookApiException $e) {
// Here : API call failed, you don't have a valid access token
// you have to send him to $facebook->getLoginUrl()
$user = null;
}
} // else : the user is not logged in
因此,您有两种情况需要将用户发送到$facebook->getLoginUrl()
,在这两种情况下,我们都制作了$user == null
。 所以我们只需要添加:
<?php if ($user): ?>
<a href="<?php echo $facebook->getLogoutUrl() ?>">Logout of Facebook</a>
<?php else: ?>
<a href="<?php echo $facebook->getLoginUrl() ?>">Login with Facebook</a>
<?php endif ?>
对于完整的流程,您可以查看Facebook PHP SDK 的示例,该示例有据可查。
希望有帮助。
这对我很有帮助。。很多。 所以..用户只需要首先接受您的应用程序即可使用用户数据。
<body>
<?php
if (!$user_id)
echo("<script> top.location.href='" . $facebook->getLoginUrl() . "'</script>");
?>
我在 getUser() 调用返回 0 时遇到了同样的问题。前一天它正在工作,下一个它不是。 我没有意识到 PHP SDK 旨在与 JS SDK 一起使用。 您应该按照以下说明操作: https://developers.facebook.com/docs/reference/javascript/ - 包括后面的配置,您应该被排序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.