我正在尝试使用 Facebook 的默认 PHP 网站集成和身份验证。当用户登录时,我可以请求权限以从用户那里获取各种信息。
这个问题有点老了。请注意 harkirat1892 的评论。
“如果有人使用 Facebook SDK v4.4 遇到这个问题,那么 Dhiraj 的答案在这种情况下将不起作用,因为有一个小的变化。您不必在传递给 getLoginUrl 的数组中包含 redirect_uri。
根据 v4.4,getLoginUrl 应该像这样工作:
$loginUrl = $facebook->getLoginUrl(
array(
'scope' => 'email,user_checkins, user_birthday'
)
);
可以在此处找到各种范围:Facebook 权限。”
很容易弄清楚如何使用 JavaScript 来做到这一点,但我很困惑在 PHP 示例中指定范围的位置。
基本上,我只想请求访问他们的电子邮件和位置以及其他一些信息的权限。
这是我正在使用的代码:(稍作修改,但几乎与他们所拥有的完全匹配。)
<?php
define('YOUR_APP_ID', '---------');
define('YOUR_APP_SECRET', '------------');
//Uses the PHP SDK. Download from https://github.com/facebook/php-sdk
require 'facebook.php';
$facebook = new Facebook(array(
'appId' => YOUR_APP_ID,
'secret' => YOUR_APP_SECRET,
));
$FBUID = $facebook->getUser();
?>
<?php if ($FBUID) {
$userInfo = $facebook->api('/' + $FBUID); ?>
<?php $FBName = $userInfo['name'];?>
<!--
Welcome <? // = $userInfo['name'] ?> -->
<?php } else { ?>
<div id="fb-root"></div>
<fb:login-button></fb:login-button>
<?php } ?>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '---------------',
status : true,
cookie : true,
xfbml : true,
oauth : true,
});
FB.Event.subscribe('auth.login', function(response) {
window.location.reload();
});
};
(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
</script>