2017-04-13 2 views
0

FB 로그인 후 FB 토큰으로 API를 게시하는 비동기 함수를 사용하고 싶습니다. (아래처럼) 불행히도 로그인 콜백 전에는 정의되지 않은 accessToken이 출력됩니다.reactjs에서 FB.login() 콜백을 대기시키는 방법은 무엇입니까?

// fbsdk 
window.fbAsyncInit = function() { 
    FB.init({ 
    appId  : '', 
    xfbml  : true, 
    version : 'v2.8' 
    }); 
    FB.AppEvents.logPageView(); 
}; 

(function(d, s, id){ 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_US/sdk.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk')); 
export default async function request(url, options) { 

    let accessToken = await FB.login(function (res) { 
     console.log(res.authResponse.accessToken) 
     return res.authResponse.accessToken; 
    }); 

    console.log(accessToken); 
    url = url+ '/access_token?=' + accessToken 
    const response = await fetch(url, { 
     method: 'POST', 
     body: {'access_token': accessToken}, 
    }); 

    const data = await response.json(); 

    const ret = { 
     data, 
     headers: {}, 
    }; 

    if (response.headers.get('x-total-count')) { 
     ret.headers['x-total-count'] = response.headers.get('x-total-count'); 
    } 

    console.log(ret); 

    return ret; 

} 

답변

1

당신은 window.FB.Event.subscribe('auth.statusChange', your_callback_function)를 사용해야하고 your_callback_function에 당신은 페이스 북에서 accessToken을 얻을 수 있습니다.

+0

이 링크는 질문에 대한 답변 일지 모르지만 스택 오버플로에 대한 답변 만 링크가 필요하지 않을 수 있습니다. 링크의 중요한 부분을 가져 와서이 답변을 향상시킬 수 있습니다. 링크가 변경되거나 제거됨 :) – WhatsThePoint

관련 문제