【发布时间】:2012-05-15 02:04:55
【问题描述】:
据我了解,最近 Facebook 已决定删除 offline_access 权限,并引入了一个称为长寿命访问令牌的概念,最长可使用 60 天。有谁知道如何使用 Facebook JavaScript SDK 获取此访问令牌?
【问题讨论】:
据我了解,最近 Facebook 已决定删除 offline_access 权限,并引入了一个称为长寿命访问令牌的概念,最长可使用 60 天。有谁知道如何使用 Facebook JavaScript SDK 获取此访问令牌?
【问题讨论】:
有一种方法可以将其延长至 60 天。此处描述:https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/
下Scenario 4: Client-side OAuth and Extending Access_Token Expiration Time through New Endpoint
编辑: 为了扩展访问令牌,您需要使用短期访问令牌发出以下请求:
https://graph.facebook.com/oauth/access_token?
client_id=APP_ID&
client_secret=APP_SECRET&
grant_type=fb_exchange_token&
fb_exchange_token=EXISTING_ACCESS_TOKEN
【讨论】:
由于 Facebook 中的一个错误,一些用户必须在 Facebook 发布长期令牌之前取消对应用的授权。
【讨论】:
我刚刚使用“axios”进行了 Facebook Graph API 调用。您可以从 App Dashboard 中找到 client_id 和 client_secret。
getLongLiveToken = () => {
window.FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
let userAccessToken = response.authResponse.accessToken;
axios.get(`https://graph.facebook.com/oauth/access_token?client_id=${clientId}&client_secret=${clientSecret}&grant_type=fb_exchange_token&fb_exchange_token=${userAccessToken}`)
.then((response) => {
console.log("Long Live Access Token");
console.log(response.data.access_token);
});
}
});
}
<button onClick={ () => this.getLongLiveToken() } >Long Live Token</button>
【讨论】:
将函数添加到 javascript 中,并提供以下详细信息:我希望它对你有用。
function getLongLiveToken(data){
FB.api('oauth/access_token', {
client_id: data.client_id, // FB_APP_ID
client_secret: data.secret, // FB_APP_SECRET
grant_type: 'fb_exchange_token',
fb_exchange_token: data.access_token // USER_TOKEN
}, function (res) {
if(!res || res.error) {
console.log(!res ? 'error occurred' : res.error);
}else{
var accessToken = res.access_token;
if(typeof accessToken != 'undefined'){
}
}
});
}
【讨论】: