OAuthException: Този код за оторизация е използван

Имам приложение за facebook, където използвах php CURL за упълномощаване и за получаване на токен за достъп и потребителско име във Facebook. Имам следния код за разрешаване на потребителски достъп:

function AlowUserAccess()
 {
    include "config.php"; 
    error_reporting(0);
    if($_REQUEST['code'])
    {
        $returnurl = $fbconfig['baseUrl'];
        $url = "https://graph.facebook.com/oauth/access_token?client_id=".$fbconfig['appid']."&client_secret=".$fbconfig['secret']."&grant_type=fb_exchange_token&fb_exchange_token=".$_REQUEST['code'];
        $ch = curl_init();
        curl_setopt_array($ch, array(
            CURLOPT_URL => $url,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_VERBOSE => true
            ));
        $result = curl_exec($ch);
        curl_close($ch);
            return $result;
}

Отпечатах върнатата стойност $result от горната функция и върнах следните грешки:

 {"error":{"message":"Malformed access token AQxxxxxxxxxGypoLOAjcig9qSai_MuNna8marHxuddddCno6T_NqqD19zzzzzzzGNy_FJbcK9heZKPCSysXBYHFTD_AgzMxwE5BqIEHvyK-QGl5kv1R0bPOUx7V0xs5-OQdsfddsRc0uoR_y1ElTlY4YCrWr5dfssdfsdfdsITrXezhcv1S_pu-3g0Kx8v-VtsvMI6oVYlC0J4eogSL6yhIsWrNS6uuTZIWwE0BGWJCjVieU-BbCPLsqkasdVFjnPz489xdb2_bSfVBKvsdfsdfaefYtn3luygCs","type":"OAuthException","code":190}}

person CodeManiac    schedule 18.05.2013    source източник


Отговори (2)


Използвате кода, който Facebook ви изпрати, за да се опитате да получите дълготраен токен за достъп.

Първо трябва да получите краткотраен токен за достъп. След това разменете краткотрайния токен за достъп с дълготраен токен за достъп (което е повикването, което се опитвате да направите по-горе).

Получаване на краткотраен токен за достъп:

https://graph.facebook.com/oauth/access_token?client_id={client_id}&redirect_uri={your redirect uri}&client_secret={client_secret}&code={code}

Където кодът е кодът, който използвате в момента. Не съм сигурен дали се изисква redirect_uri, но го използвам.

Това ще върне кодиран низ като

access_token=AQADEADBEEF&expires=11111

След това можете да използвате този токен за достъп (AQADEADBEEF) вместо вашия fb_exchange_token по-горе

person Andy Jones    schedule 20.05.2013
comment
Благодаря много Анди Джоунс Наистина ми помага. Моят проблем е решен - person CodeManiac; 22.05.2013

Опитайте следните опции:

CURLOPT_USERAGENT       => 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)',
CURLOPT_COOKIEFILE      => 'anc.tmp',
CURLOPT_COOKIEJAR       => 'anc.tmp',
CURLOPT_FOLLOWLOCATION  => 1,
CURLOPT_RETURNTRANSFER  => 1,
CURLOPT_SSL_VERIFYHOST  => 0,
CURLOPT_SSL_VERIFYPEER  => 0,
CURLOPT_TIMEOUT         => 120

Google: SEM Labs CURL клас за обвивка.

person Kohjah Breese    schedule 18.05.2013