为什么 FB access_token 对我来说很长,但对其他用户来说不是?

问题描述

我创建了一个 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...