2017-08-06 103 views
0

这是我的代码在node.js服务器上运行。我拥有从Instagram开发者页面中定义的OAuth2.0协议获得的正确访问令牌。使用instagram节点时出错

function getMedia(accessToken) { 
    var instagram = require('instagram-node').instagram(); 
    instagram.use({ 
     access_token: accessToken 
    }); 
    instagram.user_self_media_recent(function(err, medias, pagination, remaining, limit) { 
     if(err) { 
     console.log(err); 
     } 
     console.log(medias); 
    }); 
} 

我在我的错误响应得到这个:

{ Error: getaddrinfo ENOTFOUND api.instagram.com api.instagram.com:443 
    at errnoException (dns.js:28:10) 
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26) 
    code: 'ENOTFOUND', 
    errno: 'ENOTFOUND', 
    syscall: 'getaddrinfo', 
    hostname: 'api.instagram.com', 
    host: 'api.instagram.com', 
    port: 443, 
    retry: [Function: retry] } 

有谁知道这是什么错误响应意味着什么?

回答

0

快速跟进。我在后端使用Google的Firebase。在“Spark”计划中,您会收到此警告:

未配置帐单帐户。外部网络无法访问,并且配额受到严重限制。配置结算帐户从Instagram的删除这些 限制

我升级到“火焰”的计划,现在检索数据。

下面发布的答案表明我需要用client_id和client_secret初始化Instagram客户端,但这不是事实。我只是通过access_token获取媒体文章。

谢谢

0

初始化instagram客户端时,应该使用应用的客户端ID和客户端密钥。

instagram.use({ 
    client_id: INSTA_CLIENT_ID, 
    client_secret: INSTA_CLIENT_SECRET, 
}); 

然后使用访问令牌来验证特定的instagram用户并代表他们请求媒体。

instagram.use({ 
    access_token: accessToken 
}); 
instagram.user_self_media_recent(function(err, medias, pagination, remaining, limit) { 
    if(err) { 
    console.log(err); 
    } 
    console.log(medias); 
}); 

当你第一次初始化您的Instagram客户端节点在您注册应用here,你必须使用你的Instagram收到认证证书。

+0

得到它的工作。无需使用client_id和client_secret进行初始化,accessToken就足够了。 –