Facebook Connect(javascript sdk)中的API密钥错误
我正在尝试在一个网站上实现Facebook连接。我正在尝试使用Facebok的Javascript SDK。我是新手,不幸的是,Facebook WIKI中提供的大多数链接都过时了。。。返回404未找到。无论如何,我在结尾之前添加了以下代码: 在同一页面中的上述脚本之前,我在其他地方有一个登录按钮:Facebook Connect(javascript sdk)中的API密钥错误,javascript,facebook,login,sdk,connect,Javascript,Facebook,Login,Sdk,Connect,我正在尝试在一个网站上实现Facebook连接。我正在尝试使用Facebok的Javascript SDK。我是新手,不幸的是,Facebook WIKI中提供的大多数链接都过时了。。。返回404未找到。无论如何,我在结尾之前添加了以下代码: 在同一页面中的上述脚本之前,我在其他地方有一个登录按钮: <fb:login-button v="2">Connect with Facebook</fb:login-button> 此按钮呈现为普通fb connect按钮,单击
<fb:login-button v="2">Connect with Facebook</fb:login-button>
此按钮呈现为普通fb connect按钮,单击该按钮将打开一个新的弹出窗口,正常情况下应如此。问题是它显示了“指定的api密钥无效”错误。在检查弹出窗口的地址栏时,我看到api_key=undefined被传递给它:
你知道吗?我在过去的5个小时里一直在努力解决这个问题。。。请帮我找出为什么正确的API密钥没有被传递到弹出窗口
提前感谢。我也在做同样的事情,我在这里发现了一个很容易实现和理解的示例,它们可以使用jQuery,但不使用库也可以这样做:
<body>
<div>
<button id="login">Login</button>
<button id="disconnect">Disconnect</button>
</div>
<div id="user-info" style="display: none;"></div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
// initialize the library with the API key
FB.init({ appId : '12344' });
// fetch the status on load
FB.getLoginStatus(handleSessionResponse);
$('#login').bind('click', function() {
FB.login(handleSessionResponse);
});
$('#disconnect').bind('click', function() {
FB.api({ method: 'Auth.revokeAuthorization' }, function(response) {
clearDisplay();
});
});
// no user, clear display
function clearDisplay() {
$('#user-info').hide('fast');
}
// handle a session response from any of the auth related calls
function handleSessionResponse(response) {
// if we dont have a session, just hide the user info
if (!response.session) {
clearDisplay();
return;
}
// if we have a session, query for the user's profile picture and name
FB.api(
{
method: 'fql.query',
query: 'SELECT name, pic FROM profile WHERE id=' + FB.getSession().uid
},
function(response) {
var user = response[0];
$('#user-info').html('<img src="' + user.pic + '">' + user.name).show('fast');
}
);
}
</script>
</body>
查找整个代码,您可以找到其他资源。您需要设置画布发布授权url,并确保基本画布url是发布授权url的前缀 我已将我的facebook connect地址设置为有www,并且我正在使用非www访问我的测试站点,当我切换到www版本时,fb connect工作正常。感谢Kucede的帮助。通过使用旧的FB.Connect类,我可以摆脱是的,实际上是我的项目。具有讽刺意味的是,FB Dev文档包含旧代码和新代码的混合,没有任何关于该文档属于哪个版本的提示。。。真的,这是我一生中见过的最糟糕的文档。不过我很感谢你的帮助。可能是我需要使用这个,如果我遇到一个类似的项目在未来。
<body>
<div>
<button id="login">Login</button>
<button id="disconnect">Disconnect</button>
</div>
<div id="user-info" style="display: none;"></div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
// initialize the library with the API key
FB.init({ appId : '12344' });
// fetch the status on load
FB.getLoginStatus(handleSessionResponse);
$('#login').bind('click', function() {
FB.login(handleSessionResponse);
});
$('#disconnect').bind('click', function() {
FB.api({ method: 'Auth.revokeAuthorization' }, function(response) {
clearDisplay();
});
});
// no user, clear display
function clearDisplay() {
$('#user-info').hide('fast');
}
// handle a session response from any of the auth related calls
function handleSessionResponse(response) {
// if we dont have a session, just hide the user info
if (!response.session) {
clearDisplay();
return;
}
// if we have a session, query for the user's profile picture and name
FB.api(
{
method: 'fql.query',
query: 'SELECT name, pic FROM profile WHERE id=' + FB.getSession().uid
},
function(response) {
var user = response[0];
$('#user-info').html('<img src="' + user.pic + '">' + user.name).show('fast');
}
);
}
</script>
</body>