UFO ET IT

액세스 토큰없이 Facebook Graph API를 사용하여 공개 페이지 상태 가져 오기

ufoet 2020. 11. 24. 20:38
반응형

액세스 토큰없이 Facebook Graph API를 사용하여 공개 페이지 상태 가져 오기


Facebook Graph API를 사용하여 공개 페이지에서 최신 상태를 가져 오려고합니다. http://www.facebook.com/microsoft

http://developers.facebook.com/tools/explorer/?method=GET&path=microsoft%2Fstatuses 에 따르면 액세스 토큰이 필요합니다. Microsoft 페이지가 '공개'이므로 이것이 확실히 사실입니까? 액세스 토큰 없이는 이러한 공개 상태에 액세스 할 수있는 방법이 없습니까?

이 경우 내 웹 사이트에 대한 액세스 토큰을 만드는 올바른 방법은 무엇입니까? 앱 ID가 있지만 http://developers.facebook.com/docs/authentication/의 모든 예제는 사용자 로그인 처리를 설명합니다. Microsoft 페이지에서 최신 상태 업데이트를 받아 내 사이트에 표시하고 싶습니다.


이것은 의도적으로 설계된 것입니다. 일단 액세스 토큰없이 공개 페이지에서 최신 상태를 가져올 수있었습니다. API에 대한 미확인 익명 액세스를 차단하기 위해 변경되었습니다. 그래프 API를 사용하여 다음 호출을 통해 애플리케이션에 대한 액세스 토큰을 얻을 수 있습니다 (웹 사이트에 대한 Facebook 애플리케이션 세트가없는 경우 생성해야 함).

https://graph.facebook.com/oauth/access_token?
client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&
grant_type=client_credentials  

이를 앱 액세스 토큰이라고합니다. 그런 다음 위에서 앱 액세스 토큰을 사용하여 실제 API 호출을 진행합니다.

도움이 되었기를 바랍니다


AppID 및 비밀 키를 사용하여 모든 페이지의 공개 게시물 / 피드를 가져올 수 있습니다. 이렇게하면 액세스 토큰을 얻을 필요가 없습니다. 아래와 같이 불러주세요.

https://graph.facebook.com/PAGE-ID/feed?access_token=APP-ID|APP-SECRET

그리고 게시물을 얻으려면.

https://graph.facebook.com/PAGE-ID/posts?access_token=APP-ID|APP-SECRET

브라우저가 요청할 사이트를 요청한 다음 HTML에서 게시물을 추출하여 게시물을 얻을 수 있습니다.

NodeJS에서는 다음과 같이 할 수 있습니다.

// npm install request cheerio request-promise-native
const rp = require('request-promise-native'); // requires installation of `request`
const cheerio = require('cheerio');

function GetFbPosts(pageUrl) {
    const requestOptions = {
        url: pageUrl,
        headers: {
            'User-Agent': 'Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:64.0) Gecko/20100101 Firefox/64.0'
        }
    };
    return rp.get(requestOptions).then( postsHtml => {
        const $ = cheerio.load(postsHtml);
        const timeLinePostEls = $('.userContent').map((i,el)=>$(el)).get();
        const posts = timeLinePostEls.map(post=>{
            return {
                message: post.html(),
                created_time: post.parents('.userContentWrapper').find('.timestampContent').html()
            }
        });
        return posts;
    });
}
GetFbPosts('https://www.facebook.com/pg/officialstackoverflow/posts/').then(posts=>{
    // Log all posts
    for (const post of posts) {
        console.log(post.created_at, post.message);
    }
});

자세한 정보 : https://stackoverflow.com/a/54267937/2879085

참고 URL : https://stackoverflow.com/questions/7633234/get-public-page-statuses-using-facebook-graph-api-without-access-token

반응형