我通过javascript SDK发布对话框有问题。它有时会起作用,有时候不行。
它抛出了这个错误:
API错误代码:102 API错误说明:会话密钥无效或无 更长的有效错误消息:必须使用会话密钥
调用iframe对话框
我的代码:
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'CENSORED', // App ID
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
// wait a moment before showing dialog.
setTimeout("showbox()", 2 * 1000);
};
// Load the SDK Asynchronously
(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>
and
<script>
function showbox()
{
FB.ui(
{
display: 'iframe',
method: 'feed',
name: 'ASD ASD ASD:',
link: 'https://apps.facebook.com/XXX/',
picture: 'https://skvelazabava.eu/XXX/yy.jpg',
caption: 'Největší alkoholici mezi tvými přáteli jsou:',
description: ' ',
properties: [{text:"XXX", href:"https://apps.facebook.com/XXX/"},
{text:"YYY", href:"https://apps.facebook.com/XXX/"} ],
redirect_uri: 'https://url.eu/'
});
}
</script>
我必须做些什么来确保对话框具有会话密钥。
答案 0 :(得分:2)
对我来说也是如此,为其他遇到此事的人澄清:
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '{{facebook_app_id}}',
app_token : '<%=@access_token%>',
status : true,
});
FB.getLoginStatus(function(response) {
console.log(response);
FB.ui({
method: 'apprequests',
message: 'Have you heard about Rell?',
data: 'invite-to-rell-42',
display: 'iframe',
filters: [{name: 'Daaku', user_ids: ['1677846385']}, 'app_non_users', {name: 'Games People', user_ids: [703, 6203644]}]
});
});
};
// Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
</script>