in get_access_token
изменить parse_str
на json_decode
;
parse_str('{"access_token":"xxxxxxxxxxxxxxx","token_type":"bearer","expires_in":543543581}', $res);
print_r($res);
Вывод
Array
(
[{"access_token":"xxxxxxxxxxxxxxx","token_type":"bearer","expires_in":543543581}] =>
)
Песочница
Анализ строки просто берет строку и обрабатывает ее так, как если бы она была частьюстроки URL-запроса example.com?foo
:
parse_str('foo=bar', $res);
print_r($res);
parse_str('foo', $res);
print_r($res);
Вывод
//parse_str('foo=bar', $res);
Array
(
[foo] => bar
)
//parse_str('foo', $res);
Array
(
[foo] =>
)
И точно так же, как foo
станет ключом в [foo => bar]
ваша строка станет ключом наверху.
parse_str Анализирует encoded_string, как если бы это была строка запроса, передаваемая через URL, и устанавливает переменные в текущей области (или в массиве, если предоставляется результат).
Использование Json Decode
print_r(json_decode('{"access_token":"xxxxxxxxxxxxxxx","token_type":"bearer","expires_in":543543581}', true));
Вывод
Array
(
[access_token] => xxxxxxxxxxxxxxx
[token_type] => bearer
[expires_in] => 543543581
)
Итак:
function get_access_token(){
$app_secret = "bbbbbbbbbbbbb";
$app_id = "aaaaaaaaaaaaaa";
$redirect_uri = urlencode("https://localhost/firefly/Oauth/facebook");
$code = $_REQUEST["code"];
$response = file_get_contents("https://graph.facebook.com/oauth/access_token?client_id=".$app_id."&redirect_uri=".$redirect_uri."&client_secret=".$app_secret."&code=".$code);
$res = json_decode($response, true);
//return false or the access_token
return isset($res['access_token']) ? $res['access_token'] : false;
//OR
return $res; //return the whole response
//---------- old code ---------
//parse_str($response, $access_token);
//return $access_token;
}