Facebook gives me two different acces tokens, PHP SDK -
i using yii framework think wouldn't mather.
at point utilize php sdk accounts info user, works fine while user logged in @ first. after 1 or 2 hours access token expires , error (which isn't weird).
but here stuck , can think of 2 solutions both have no clue how them. first allow me introduce of code:
to log in app users send facebooklogin() action:
public function actionfacebooklogin() { $my_url = 'http://***.***.nl/app/facebook-popup.php'; $permissions = 'read_insights, publish_actions, manage_pages, email'; $loginurl = yii::app()->facebook->getloginurl(array('scope' => $permissions, 'display' => 'popup', 'redirect_uri' => $my_url)); echo '<script> window.location="'.$loginurl.'"</script>'; } after user granted proper permissions, user send login() action:
public function actionlogin() { $facebookid = yii::app()->facebook->getuser(); $accesstoken = yii::app()->facebook->getaccesstoken(); } (the rest of login action isn't important.)
now @ point ->getaccesstoken() function gives me proper access_token short life time. fine unless user longer 1 or 2 hours on page, "some weird stuff now* after user has logout , login again. still error except after around 10 minutes new access_token grant me needed permissions.
so solve thought of 2 solutions, unable find proper approach utilize this.
first easiest one. when go graph api explorer , utilize access_token app gives me info, when seek debug access_token shows access_token has experation date. when utilize same graph api explorer , allow generate access_token on own access_token doesn't expire @ all.
as asked update on handlings graph api explorer go api explorer , alter app webapp. got normal access_token filled in automaticly. when press "debug" button says access_token has experation date. when go explorer , press "get access token" button gives me other one. when 1 time again press "debug" button says access_token doesn't have experation date. great if can utilize one.
so first solution lastly access_token (if possible) , store in database. when needed utilize facebook php sdk ->setaccesstoken() function. how?? don't have clue!
second solution thought of. create init() function checks on every action if got valid access_token , if not new 1 or refresh current 1 expired. have more server load first solution, , same first solution have no clue how accomplish this.
i think main problem find facebook docs kinda hard understand, , have no clue start from.
any input much appriciated!
you can either prolong expiration time of access token, described here: https://developers.facebook.com/roadmap/offline-access-removal/
or can embed js sdk, on every page phone call fresh short lived access token if previous 1 has expired. (and shares php sdk via cookie.)
php facebook facebook-php-sdk facebook-apps facebook-access-token
No comments:
Post a Comment