未捕获的类型错误:无法读取未定义的图形 API 的属性“名称”[2.5]

Uncaught TypeError: Cannot read property 'name' of undefined Graph API[2.5]

本文关键字:名称 属性 API 图形 未定义 类型 错误 读取      更新时间:2023-09-26

我正在使用Facebook Graph API进行2次API调用。第一个 API 调用返回使用同一 Web 应用程序的朋友列表,第二个 API 调用返回登录用户的公共信息。我在包含第一个 API 调用的函数的 for 循环中遇到了一个问题。每当我尝试读取响应中的数据时,我都会收到错误。

Uncaught TypeError: Cannot read property 'name' of undefined

我的 JavaScript SDK 代码..

        function facebookSignIn() {
        FB.login(function(response) {
            // handle the response
            console.log("Response goes here!");
            // retrieve the list of friends to whom message was sent
            FB.api(
                '/me/friends', function (response) {
                    if (response && !response.error) {
                        /* handle the result */
                        console.log("Response for /me/friends goes here!");
                        console.log(JSON.stringify(response.data));
                        console.log(JSON.stringify(response.data[0].name));
                        for(var i =0;i<=response.data.length;i++){
                            var friend_name = response.data[i].name;
                            var friend_id= response.data[i].id+"@fb";                       
                            addFriendSetValues(friend_name, '-', friend_id, loginemail);
                            addFriendDbCreate();
                        }
                    }
                }
            );
            FB.api('/me?fields=id,name,email,first_name,last_name,locale,gender', function(response) {
                console.log('Successful login for: ' + response.name+" "+response.id+" "+response.email);
                loginpassword = response.id;
                loginemail =  response.email;
                loginDbCreate();    //this function is in the script_admin_v2.js
            });
        }, {scope: 'email,public_profile,user_friends'});            
    }

控制台输出..

    Response for /me/friends goes here!
    [{"name":"Friend A","id":"10153492155956028"},{"name":"Friend B","id":"117431545310469"}]
   "Friend A"
    Successful login for: Lucy 951425764944314 lucy@abc.com
    all.js:86 Uncaught TypeError: Cannot read property 'name' of undefined

即使我能够打印 response.data[0].name) 的值,当我在 for 循环中用 i 替换零时,我得到未捕获的错误。知道我哪里出错了吗??

我认为

,你需要改变

for(var i =0;i<=response.data.length;i++){
      var friend_name = response.data[i].name;
      var friend_id= response.data[i].id+"@fb";
      addFriendSetValues(friend_name, '-', friend_id, loginemail);
      addFriendDbCreate();
 }

 for(var i =0;i<=response.data.length;i++){
      if (response.data.hasOwnProperty(i)) {
        var friend_name = response.data[i].name;
        var friend_id = response.data[i].id + "@fb";
        addFriendSetValues(friend_name, '-', friend_id, loginemail);
        addFriendDbCreate();
      }
    }