Запазване/съхраняване на Facebook дълготраен токен

Бих искал да получа дълготрайни токени за достъп с моето приложение и да ги съхранявам в таблицата на потребителите, за да мога да го използвам повторно по-късно. Правя това обаждане:

$urlLongLiveToken = "https://graph.facebook.com/oauth/access_token?
client_id=xxxxxx&client_secret=yyyyyy&grant_type=fb_exchange_token
&fb_exchange_token=zzzzzzzzz";

$facebook->api($urlLongLiveToken);

Токенът за обмен (zzzzzz) е променливият „код“, който получавам от първото обаждане до facebook:

$facebook->getLoginUrl( array( 'scope' => 'publish_stream' ) );

Извикването на API за дълготраен токен връща масив

array(17) { 'about' => string(108) "OAuth is a simple way to publish and interact with
 protected data. Learn more about OAuth: http://oauth.net/" 'awards' => string(160) "• 
CNET Webware 100 award in the Editors’ Choice Most Important Technology category • Best 
New/Improved Standard in IAM & GRC, European Identity Conference" 'can_post' => 
bool(true) 'category' => string(17) "Internet/software" 'description' => string(174) 
"OAuth is a simple way to publish and interact with protected data. It's also a safer 
and more secure way for people to give you access. We've kept it simple to save you 
time." 'founded' => string(4) "2007" 'is_published' => bool(true) 'mission' => 
string(1344) "In developing OAuth, we sought to invent as little as possible, following 
the Microformats approach to pave existing cowpaths and relying on conventions already 
established in protocols like Google’s AuthSub, aol’s OpenAuth, Yahoo’s BBAuth and 
FlickrAuth and Facebook’s FacebookAuth. While we wanted the best protocol we could 
design, we also wanted one that people would use and that would be compatible with 
existing authentication methods, inherit from existing RFCs and reuse web standards 
wherever "... 'products' => string(19) "OAuth 1.0 OAuth 2.0" 'talking_about_count' => 
int(49) 'username' => string(5) "oauth" 'website' => string(17) "http://oauth.net/" 
'were_here_count' => int(0) 'id' => string(11) "xxxxxxxxxxxx" 'name' => string(5) 
"OAuth" 'link' => string(30) "https://www.facebook.com/oauth" 'likes' => int(7165) }

Какво правя грешно? Как мога да получа дълготрайния токен?


person H.novaway    schedule 06.01.2014    source източник


Отговори (1)


Не трябва да подавате пълния URL адрес на API на Facebook Graph към функцията „api“. Трябва само да подадете "/oauth/access_token?etc":

Защото, ако подадете пълния URL адрес, вие всъщност правите HTTP заявка към този https://graph.facebook.com/https://graph.facebook.com/oauth/.

So:

<?php
    $urlLongLiveToken = "/oauth/access_token?client_id=xxxxxx&client_secret=yyyyyy&grant_type=fb_exchange_token&fb_exchange_token=zzzzzzzzz";
    $facebook->api($urlLongLiveToken)
?>
person Bram Vandenbogaerde    schedule 06.01.2014
comment
Благодаря ви, изглежда е по-добре, но сега имам проблем с неправилно образуван токен. - person H.novaway; 17.01.2014
comment
Мисля, че трябва да получите своя краткотраен токен за достъп от код и след това с този токен за достъп можете да получите дълготраен. Прочетете повече за процеса на влизане тук. - person Bram Vandenbogaerde; 18.01.2014
comment
Да, благодаря, всъщност провеждах ненужни обаждания. Facebook SDK предоставя прости методи като $fb-›setExtendedAccessToken() - person H.novaway; 20.01.2014