问题描述
我创建了一个 FB 应用程序,用于更新 FB 商店目录数据提要。 我使用 Javascript SDK。 因此,首先用户(拥有 FB 页面的管理员权限)点击 FB 登录按钮,我获得了 userId 和他的 access_token。
他单击 getShopPagetoken 按钮以获取 long_lived_token。
我发送请求以获取 pageId 和 page_accesstoken(short_lived_token)。 然后我发送另一个请求将该令牌转换为 long_lived_token。
<fb:login-button id="loginbutton" scope="catalog_management,pages_show_list" onlogin="checkLoginState();" data-auto-logout-link="true">
</fb:login-button>
function checkLoginState() { // Called when a person is finished with the Login Button.
FB.getLoginStatus(function(response) { // See the onlogin handler
statusChangeCallback(response);
if (response.status === 'connected') {
var accesstoken = response.authResponse.accesstoken;
//console.log('accesstoken'+accesstoken)
}
});
}
function statusChangeCallback(response) { // Called with the results from FB.getLoginStatus().
inloggstatus=response.status
// The current login status of the person.
if (response.status === 'connected') { // Logged into your webpage and Facebook.
usertoken = response.authResponse.accesstoken;
expiresIn = response.authResponse.expiresIn;
reauthorize = response.authResponse.reauthorize_required_in;
userID = response.authResponse.userID;
//console.log('status '+response.status)
//console.log('usertoken '+usertoken)
//console.log('expiresIn '+expiresIn)
//console.log('reauthorize '+reauthorize)
//console.log('userID '+userID)
testAPI();
} else {
// Not logged into your webpage or we are unable to tell.
document.getElementById('status').innerHTML = 'Please log ' +
'into this webpage.';
}
}
var namnet;
function testAPI() { // Testing Graph API after login. See
statusChangeCallback() for when this call is made.
//console.log('Welcome! Fetching your information.... ');
FB.api('/me',function(response) {
//console.log('Successful login for: ' + response.name);
namnet=response.name
//personid=response.id
document.getElementById('status').innerHTML =
'Inloggad är,' + response.name + '!';
});
}
$$(document).on("click",".getShopPagetoken",function(event){
var catalogId= xxxxxxxxxx
console.log('klickat get pagetoken'+shopnamnet+userID)
namn=namnet
uID = FB.getAuthResponse()['userID'];
//console.log('page_userID '+uID)
accesstoken = FB.getAuthResponse()['accesstoken'];
if(accesstoken!=null){
FB.api('/'+uID+'/accounts','get',{ access_token : accesstoken },function(response){
//console.log('resp of pages',response);
if(response!=null){
var data = response.data;
pageAccesstoken= data[0].access_token;
pageid= data[0].id;
console.log('pageid'+pageid+'pageAccesstoken::',pageAccesstoken);
FB.api(
'/oauth/access_token','GET',{"grant_type":"fb_exchange_token","client_id":"xxxxxx","client_secret":"xxxxxx","fb_exchange_token":""+pageAccesstoken+""},function(response) {
console.log("long lived "+response.access_token)
long_token=response.access_token
//HERE I GET A LONG LIVED TOKEN....
}
);
}
});
}
});
所以这有效,当我以自己的身份登录 FB 并选择我的 FB 业务页面以授予权限时,我最终获得了 long_lived_token。
但是当客户尝试做同样的事情时,他会得到一个 short_lived_token
!?
那么为什么当我得到一个永不过期的令牌时他会得到一个 short_lived_token? 任何意见真的很感激,因为我不明白为什么他的意见不一样?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)