몇 달 전까지는이 방법을 사용하여 사용자의 페이스 북 프로필 사진을 가져 왔고 정상적으로 작동했습니다.
public function getUserProfilePic(){
$access_token = $this->facebook_obj->getAccessToken();
$user_id = $this->facebook_obj->getUser();
$response = $this->facebook_obj->api(
"/me/picture",
"GET",
array (
'redirect' => false,
'type' => 'large'
)
);
return (!empty($response['data']['url'])) ? $response['data']['url'] : 'images/default_profile.jpg';
}
그러나 새로운 PHP SDK 이후로이 방법에 몇 가지 문제가 있습니다. 내 앱의 기본 메뉴에서 5 분 동안 afk하고이 메서드를 호출하는 페이지로 이동하려면 클릭하면
"OAuthException : 현재 사용자에 대한 정보를 쿼리하려면 활성 액세스 토큰을 사용해야합니다."오류.
이견있는 사람?
새 / 이전 SDK와 아무 관련이없는 것 같습니다. 사용자가 로그 아웃되었거나 액세스 토큰이 만료되었거나 세션에서 사용자 처리에 결함이 있습니다.
이 오류는 /me
앱에 로그인 한 사용자가 없지만 전화를 걸 때마다 발생 합니다.
따라서 전화를 걸기 전에 항상 현재 사용자를 확인한 다음 계속 진행해야합니다.
$user_id = $this->facebook_obj->getUser();
if ($user_id) {
try {
$response = $this->facebook_obj->api(
"/me/picture",
"GET",
array (
'redirect' => false,
'type' => 'large'
)
);
} catch (FacebookApiException $e) {
error_log($e);
}
}else {
// redirect to Facebook login to get a fresh user access_token
$loginUrl = $this->facebook_obj->getLoginUrl();
header('Location: ' . $loginUrl);
}
편집하다:
json에서을 ( 를) 수행 redirect: false
하고 가져올 필요가 없습니다 url
. URL을 이미지 소스로 직접 사용할 수 있습니다.
https://graph.facebook.com/{user-id}/picture?type=large
그게 다야!
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다