这是一个新手问题。我无法找到开始使用Facebook的FQL API的示例(用HTML格式)。
这就是我目前的情况:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<title></title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>
<script src="http://connect.facebook.net/en_US/all.js#appId=216492851715113&xfbml=1"></script>
</head>
<body>
<div id="fb-root"></div>
<script>
FB.init({
appId: '216492851******',
status: true, // check login status
cookie: true, // enable cookies to allow the server to access the session
xfbml: true // parse XFBML
});
</script>
<script>
FB.api(
{
method: 'fql.query',
query: 'SELECT name, pic_small FROM user WHERE uid=me()'
},
function (response) {
alert('Name is ' + response[0].name);
}
);
</script>
</body>
</html>
我希望看到我的名字显示在警报中(因为我登录了Facebook)。
起初我觉得它没有用,因为我使用的是localhost,但我已经修改了我的Host文件以匹配我提供给Facebook的URL。
我猜这是会话问题,因为如果我将查询更改为使用硬编码ID:
'SELECT name, pic_small FROM user WHERE uid=696190859'
它会起作用。
答案 0 :(得分:0)
或更具体地说:
查询:'SELECT%20name,pic_small%20FROM%20user%20WHERE%20uid = me()'
您需要确保网址已编码。看这里: http://www.blooberry.com/indexdot/html/topics/urlencoding.htm
希望这有效吗?
答案 1 :(得分:0)
您需要通过调用FB.login()来确保用户已通过您的应用程序进行了身份验证,或通过调用FB.getLoginStatus()验证他们是否已经过身份验证。否则,me()将不会像您遇到的那样存在,因为它们尚未经过身份验证。