Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从第三方网站向facebook个人资料添加事件信息_Javascript_Facebook_Facebook Graph Api_Facebook Javascript Sdk - Fatal编程技术网

Javascript 从第三方网站向facebook个人资料添加事件信息

Javascript 从第三方网站向facebook个人资料添加事件信息,javascript,facebook,facebook-graph-api,facebook-javascript-sdk,Javascript,Facebook,Facebook Graph Api,Facebook Javascript Sdk,我正在尝试使用facebook提供的Javascript SDK从第三方网站向facebook用户配置文件添加事件信息。我只是在谷歌上搜索了一些教程,我得到了这些链接 我尝试了登录注销和会话处理的组合 这是我运行的代码,只是为了测试它是否有效 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml"> <head

我正在尝试使用facebook提供的Javascript SDK从第三方网站向facebook用户配置文件添加事件信息。我只是在谷歌上搜索了一些教程,我得到了这些链接

我尝试了登录注销和会话处理的组合

这是我运行的代码,只是为了测试它是否有效

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>

<div id="fb-root"></div>

<script type="text/javascript">
window.fbAsyncInit = function()
{
    FB.init({
        appId: '207712505927107', 
        status: true, 
        cookie: true, 
        xfbml: true
    });

    /* All the events registered */
    FB.Event.subscribe('auth.login', function(response) {
    // do something with response
        login();
    });

    FB.Event.subscribe('auth.logout', function(response) {
        // do something with response
        logout();
    });

    FB.getLoginStatus(function(response)
    {
        if (response.session)
        {
            // logged in and connected user, someone you know
            login();
        }
    });
};

(function() 
{
    var e = document.createElement('script');
    e.type = 'text/javascript';
    e.src = document.location.protocol
            + '//connect.facebook.net/en_US/all.js';
    e.async = true;
    document.getElementById('fb-root').appendChild(e);
}());

function login()
{
    FB.api('/me', function(response)
    {
        document.getElementById('login').style.display = "block";

        var loggedInMessage = response.name + " successfully logged in!";
        document.getElementById('login').innerHTML = loggedInMessage;
    });
}

function logout()
{
    document.getElementById('login').style.display = "none";
}

//addevent to facebook profile 

function addevents()
{
    FB.api('/me/events', 'post', {
        name:          "JS-SDK Event",
        start_time:    1272718027,
        location:      "Beirut",
        privacy_type:  "OPEN"
    }, function(resp) {
        alert(resp.id);
    });
}
</script>

<p>
    <fb:login-button
        autologoutlink="true" 
        perms="email,user_birthday,status_update,publish_stream,create_event">
    </fb:login-button>
</p>

<p>
    <a href="#" onclick="addevents(); return false;">Add Events</a>
</p>

<br />
<br />
<br />
<br />

<div id="login" style ="display:none"></div>
<div id="name"></div>

</body>
</html>

window.fbAsyninit=函数()
{
FB.init({
appId:'207712505927107',
状态:正确,
曲奇:是的,
xfbml:对
});
/*所有事件都已登记*/
FB.Event.subscribe('auth.login',函数(响应){
//做些有反应的事情
登录();
});
FB.Event.subscribe('auth.logout',函数(响应){
//做些有反应的事情
注销();
});
FB.getLoginStatus(函数(响应)
{
if(response.session)
{
//已登录并已连接的用户,您认识的人
登录();
}
});
};
(功能()
{
var e=document.createElement('script');
e、 类型='text/javascript';
e、 src=document.location.protocol
+“//connect.facebook.net/en_US/all.js”;
e、 异步=真;
document.getElementById('fb-root').appendChild(e);
}());
函数登录()
{
FB.api('/me',函数(响应)
{
document.getElementById('login').style.display=“block”;
var loggedInMessage=response.name+“成功登录!”;
document.getElementById('login').innerHTML=loggedInMessage;
});
}
函数注销()
{
document.getElementById('login').style.display=“无”;
}
//添加到facebook个人资料
函数addevents()
{
FB.api(“/me/events”、“post”{
名称:“JS-SDK事件”,
开始时间:1272718027,
地点:“贝鲁特”,
隐私类型:“打开”
},功能(resp){
警报(各自id);
});
}






当我点击添加事件页面时,我得到“未定义”。我无法将事件添加到facebook profle。请帮助我

我会再次尝试您的代码,可能还会在addevents函数的回调方法中尝试console.log(resp)。我在fbrell.com上测试了你的代码,它似乎工作得很好,正如预期的那样

编辑:经过一番研究(以及您的固定代码…),我发现fb:login按钮无法确保您的应用程序具有perms参数请求的正确权限。我们在执行图形请求时发现了这一点,但它失败了。因此,我们捕获错误,然后通过
FB.Login
方法启动登录模式,并请求
create\u event
权限。当用户接受该对话框时,我们将重试创建事件

<fb:login-button
    autologoutlink="true" 
    perms="email,user_birthday,status_update,publish_stream,create_event">
</fb:login-button>
<a href="#" id="create_event" onclick="create_event();">create</a>

<script>
FB.XFBML.parse();
document.getElementById('create_event').onclick = function() { create_event(); }
function create_event()
{
    FB.api('/me/events', 'post', {
        name:          "JS-SDK Event",
        start_time:    1272718027,
        location:      "Anywhere USA",
        privacy_type:  "OPEN"
    }, function(resp) {

        if (typeof resp.error != 'undefined')
        { /*this failed. most likely because we don't have the extended permission
            for create_event. so lets check for it, ask for it, and try to create
            the event again.  but first, we'll make sure that the error message says
            something about 'create_event' so we don't launch an infinite loop
          */
            if (resp.error.message.match(/create_event/))
            {
                FB.login(function(response)
                {
                    if (response.session 
                        && response.status == 'connected' 
                        && response.perms.match(/create_event/))
                    {
                        //this user is connected & we have create event permission.
                        create_event();
                    }
                },
                {
                    perms: 'create_event'
                });
            }
        }    
    });
}
</script>

FB.XFBML.parse();
document.getElementById('create_event')。onclick=function(){create_event();}
函数create_event()
{
FB.api(“/me/events”、“post”{
名称:“JS-SDK事件”,
开始时间:1272718027,
地点:“美国任何地方”,
隐私类型:“打开”
},功能(resp){
如果(响应错误的类型!=“未定义”)
{/*此操作失败。很可能是因为我们没有扩展权限
对于create_事件。让我们检查它,请求它,然后尝试创建
事件再次发生。但首先,我们将确保错误消息显示
一些关于“创建事件”的东西,这样我们就不会启动无限循环
*/
if(resp.error.message.match(/create\u event/))
{
FB.登录(功能(响应)
{
如果(response.session)
&&response.status==“已连接”
&&response.perms.match(/create\u event/)
{
//此用户已连接&我们具有创建事件权限。
创建_事件();
}
},
{
烫发:“创建_事件”
});
}
}    
});
}
fbrell.com上的工作代码:


window.fbAsyninit=函数(){
init({appId:'207712505927107',状态:true,cookie:true,xfbml:true});
/*所有事件都已登记*/
FB.Event.subscribe('auth.login',函数(响应){
//做些有反应的事情
登录();
});
FB.Event.subscribe('auth.logout',函数(响应){
//做些有反应的事情
注销();
});
FB.getLoginStatus(函数(响应){
if(response.session){
//已登录并已连接的用户,您认识的人
登录();
}
});
};
(功能(){
var e=document.createElement('script');
e、 类型='text/javascript';
e、 src=document.location.protocol+
“//connect.facebook.net/en_US/all.js”;
e、 异步=真;
document.getElementById('fb-root').appendChild(e);
}());
函数登录(){
FB.api('/me',函数(响应){
document.getElementById('login').style.display=“block”;
document.getElementById('login')。innerHTML=response.name+“成功登录!”;
});
}
函数注销(){
document.getElementById('login').style.display=“无”;
}
//添加事件
函数addevents(){
FB.api(“/me/events”,“post”{
名称:“精彩事件”,
开始时间:1272718027,
地点:“班加鲁”,
隐私类型:“打开”,
描述:“欢迎光临!!!”
},功能(resp){
文件写入(各自id);
});
}
//验货
函数检查\u perm(){
api({method:'users.hasAppPermission',ext_perm:'create_event'},函数(resp)
{
如果(响应==“1”){
警报(“已授予权限”);
}否则{
警报(“未授予许可”);
}
});
}

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<div id="fb-root"></div>
<script type="text/javascript">

window.fbAsyncInit = function() {
    FB.init({appId: '207712505927107', status: true, cookie: true, xfbml: true});

    /* All the events registered */
    FB.Event.subscribe('auth.login', function(response) {
        // do something with response
        login();
    });

    FB.Event.subscribe('auth.logout', function(response) {
        // do something with response
        logout();
    });

    FB.getLoginStatus(function(response) {
        if (response.session) {
            // logged in and connected user, someone you know
            login();
        }
    });
};

(function() {
    var e = document.createElement('script');
    e.type = 'text/javascript';
    e.src = document.location.protocol +
    '//connect.facebook.net/en_US/all.js';
    e.async = true;
    document.getElementById('fb-root').appendChild(e);
}());

function login(){
    FB.api('/me', function(response) {
        document.getElementById('login').style.display = "block";
        document.getElementById('login').innerHTML = response.name + " succsessfully logged in!";
    });
}

function logout(){
    document.getElementById('login').style.display = "none";
}

//add events 
function addevents() {
    FB.api('/me/events','post',{
        name:"awesome event",
        start_time:1272718027,
        location:"Bengaluru",
        privacy_type:"OPEN",
        description:"U r    invited !!!"
    }, function(resp) {
        document.write(resp.id);
    });
}

//checking persmission

function check_perm() {

    FB.api({ method: 'users.hasAppPermission', ext_perm: 'create_event' }, function(resp)
    {
        if (resp === "1") {
            alert('Permission granted');
        } else {
            alert("Permission not granted");
        }
    });
}

</script>

<p>Please click on Login button first </p>
<p><fb:login-button autologoutlink="true" perms="create_event"></fb:login-button></p>

<p> Please click on check permissions first </p>
<a href="#" onclick="check_perm(); return false;"> check permissions </a>
<p> now u r all set to add events to facebook </p>

<p>
    <a href="#" onclick="addevents(); return false;"> Add Events </a>

</p>

<br /><br /><br />

<div id="login" style ="display:none"></div>
<div id="name"></div>

</body>
</html>