4

Я пытаюсь использовать javacript SDK для доступа к токену, а затем продлеваю токен доступа на 60 дней. Я получил réponse ошибку, как это от ответа: Object { message="Invalid OAuth access token.", type="OAuthException", code=190}Facebook Javascript SDK расширяет доступ к токену «Недопустимый токен доступа OAuth» - 190 - «OAuthException»

Мои ожидания:

  1. Получить новый маркер доступа с 60 дней истекают
  2. консоли на экране.

Мой код:

window.onload = function() { 

var isLogin = true; 

FB.init({appId:422642254433770, cookie:true, status:true, xfbml:true }); 

FB.getLoginStatus(function(response) { 
    if (response.status === 'connected') { 
     // the user is logged in and connected to your 
     // app, and response.authResponse supplies 
     // the user’s ID, a valid access token, a signed 
     // request, and the time the access token 
     // and signed request each expire 
     var uid = response.authResponse.userID; 
     var accessToken = response.authResponse.accessToken; 
     var accessTokenOld = response.authResponse.accessToken; 

     //Extend access token      
     var OauthParams = {}; 
     OauthParams['client_id'] = '//REMOVED APP ID'; 
     OauthParams['client_secret'] = '//REMOVED APP SECRET'; 
     OauthParams['grant_type'] = 'fb_exchange_token'; 
     OauthParams['fb_exchange_token'] = 'accessToken'; 
     OauthParams['response_type'] = 'token'; 

     console.log("Old accessToken => " + accessToken); 
     FB.api('/oauth/access_token', 'post', OauthParams, function(response) { 
      console.log(response); 

      if (!response || response.error) { 
       console.log(response.accesstoken); 
      } else { 
       console.log("Lay new access token bi loi " + response.error.message); 
      } 
     });   
    } 
}); 
}; 

Я стараюсь искать повсюду для этой проблемы 3 дней без каких-либо ключ. У меня там есть опыт? пожалуйста помоги.

Большое спасибо

+0

Когда вы помещаете токен, который вы пытаетесь обменять на [Инструмент отладки Facebook] (https://developers.facebook.com/tools/debug), он правильно проверяет? – Igy

+0

Yeap Lgy, я проверяю токен возврата и истекает следующие 2 часа. Нет проблем с токеном возврата, поэтому я не знаю, почему эта ошибка происходит. –

+1

My bad: OOauthParams ['fb_exchange_token'] = 'accessToken'; Это будет работать: OOauthParams ['fb_exchange_token'] = accessToken; –

ответ

0

Если в дополнительных параметрах FB App у вас есть «Удалить разрешение offline_access» включено, все ваши маркеры доступа будут 60 дней по умолчанию.

Недавно мы столкнулись с этой проблемой, и это устранило проблему.

Надеюсь, это поможет!

-2

Я нашел простое решение, чтобы получить расширенный маркер доступа с помощью Jquery Валиде до 2 месяцев

Переменные перейти к URL-адресу:

var accessToken = 'CURRENT_ACCESS_TOKEN'; 
var appid  = 'APPID'; 
var appsecret = 'APPSECRET'; 

Ваш URL должен указывать на

var exchangeUrl = "https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&fb_exchange_token="+accessToken+"&client_id="+appid+"&client_secret="+appsecret; 

Сделайте запрос Ajax как

$.ajax({ 
type: "GET", 
url: exchangeUrl, 
success: function(data) 
{ 
    extended = data.split('='); 
    extendedAT = extended['1'].replace('&expires',''); 
     alert(extendedAT); 

} 

}); 
+1

Вы не должны передавать секрет приложения на передние скрипты ... небезопасно – XciD

1

Выполнение этого в клиенте это плохая идея из-за требования о включении приложения тайны фактического клиента, что очень опасно. Лучше всего называть конечную точку на вашем сервере, которая обрабатывает это отдельно, чтобы секрет приложения оставался в вашей контролируемой среде.

Смежные вопросы