我正在实施我的fb应用程序,它已连接到自己的fb粉丝页面。我需要获取用户名,ID等用户信息,但当我点击“Facebook身份验证”链接时,我最终会进入一个空白页面? 您可以在此处查看我的代码:http://codepad.org/f0Tuh63v
error_reporting(E_ALL);
ini_set('display_errors', true);
require 'facebook/facebook.php';
$facebook = new Facebook(array(
'appId' => '1',
'secret' => '2',
));
// See if there is a user from a cookie
$user = $facebook->getUser();
if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
print_r($user_profile);
} catch (FacebookApiException $e) {
echo '<pre>'.htmlspecialchars(print_r($e, true)).'</pre>';
$user = null;
}
}
else{
$loginUrl = $facebook->getLoginUrl(
array('scope' => 'user_about_me,user_birthday,email,publish_actions,offline_access,user_hometown,user_location',
'redirect_uri' => "https://domain.net/intro.php"
)
); // end of array
}
?>
<!DOCTYPE html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
<body>
<?php if ($user) { ?>
Your user profile is
<pre>
<?php print htmlspecialchars(print_r($user_profile, true)) ?>
</pre>
<?php } else { ?>
<a href="<?php echo $loginUrl; ?>">Facebook authenticate</a>
<?php } ?>
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId: '<?php echo $facebook->getAppID() ?>',
cookie: true,
xfbml: true,
oauth: true,
status: true
});
FB.Event.subscribe('auth.login', function(response) {
//window.location.reload();
});
FB.Event.subscribe('auth.logout', function(response) {
//window.location.reload();
});
};
(function() {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
</script>
</body>
</html>
它也在这里http://codepad.org/f0Tuh63v 我做错了什么?
还有一种方法可以在不使用phpsdk或js sdk的情况下获取FB用户ID吗?或者我必须使用这些插件吗?
答案 0 :(得分:0)
我看不出你的代码有什么问题。但是,如果您使用的是Javascript,我可以告诉您另一种获得身份验证的方法,然后获取您需要的信息。
我在我的按钮后面使用了以下代码,该代码验证了我的Facebook应用程序,然后将用户重定向到我的网站。它对我有用。
<a class="fb-login-button" align="center" target="_blank" href="https://www.facebook.com/dialog/oauth?client_id=CLIENT_ID&response_type=token&scope=PERMISSION_1,PERMISSION_2&redirect_uri=YOUR_WEBSITE"> TEXT </a>
然后我提取了重定向URL中返回的令牌。
var url_t; // Get the redirected URL.
access_token = url_t.split('=')[1].split('&')[0];
然后使用访问令牌发送了HTTP请求以获取所需数据。我使用了facebook提供的GRAPH API。例如:获取用户的名字:
var xhr = new XMLHttpRequest();
var f_url_new = "https://graph.facebook.com/fql?q=SELECT%20name%20FROM%20user%20WHERE%20uid%20=%20me()&access_token=" + access_token;
xhr.open("GET", f_url_new , true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
obj1 = JSON.parse(xhr.responseText);
var str = obj1.data[0].name.toString();
var n=str.split(" ");
document.getElementById("name").innerText = n[0];
}
}
xhr.send();
希望它能让您对替代方案有所了解。这不是您问题的正确答案,但可以帮助您完成思考过程。