微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决为什么 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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?