2017-01-02 3 views
1

Facebook 페이지에서 일부 게시물을 가져와 내 웹 사이트에 표시해야합니다. 내가 페이스 북의 그래프 API를 사용하여 찾고 있어요,하지만 난 조금 어려움을 겪고있어, 설명서 및 모든 종류의 자습서 내가 먼저 내 웹 사이트에 로그인하는 사용자에게 물어 로그인 흐름을 설정하는 것으로 보인다. 그러나 그것은 내가 필요한 것이 아닙니다. 페이스 북으로 인증 (유지)하고 정기적으로 새 게시물을 가져 오려면 내 서버 측 응용 프로그램이 필요합니다.Facebook Graph API로 인증

페이지 토큰을 사용하여 수명이 긴 토큰을 가져올 수 있어야한다는 것을 알았지 만 지금은 단명 한 토큰을 사용하여 인증하는 방법을 알지 못합니다.

그래서 응용 프로그램 ID와 비밀을 얻는 테스트 응용 프로그램을 설정하고 Facebook Graph API Explorer에 가서 응용 프로그램을 만드는 데 사용 된 사용자의 인증 토큰을 가져 왔습니다. 내가 트리플가-확인했습니다

Graph returned an error: Invalid appsecret_proof provided in the API argument

: 내 코드를 실행하면

(...) 
$fb = new \Facebook\Facebook([ 
    'app_id' => $app_id, 
    'app_secret' => $app_secret, 
    'default_graph_version' => '2.8', 
    'default_access_token' => $app_access_token 
]); 

try { 
    $response = $fb->get('/me'); 
} catch(\Facebook\Exceptions\FacebookResponseException $e) { 
    echo 'Graph returned an error: ' . $e->getMessage(); 
    exit; 
} catch(\Facebook\Exceptions\FacebookSDKException $e) { 
    // When validation fails or other local issues 
    echo 'Facebook SDK returned an error: ' . $e->getMessage(); 
    exit; 
} 

$me = $response->getGraphUser(); 

나는이 메시지가 : 여기

내가 연결 그래프 API를 테스트하는 데 사용하고 기본 코드 그 $app_id$app_secret은 내가 앱을 만들 때 부여한 값이며, 내 개인 토큰과 Graph API Explorer를 통해 얻을 수 있었던 페이지 토큰으로 시도한 내 액세스 토큰을 세 번 확인했습니다.

나는 또 다른 내가 수동으로 appsecret 증거를 생성 할 것을 제안 스레드 발견, 그래서 나는이 한 : 나는 app_secret$appsecret_proof을 통과해야 아니면 내가 어떻게 사용해야하는 경우

$appsecret_proof= hash_hmac('sha256', $app_access_token, $app_secret); 

$fb = new \Facebook\Facebook([ 
    'app_id' => $app_id, 
    'app_secret' => $appsecret_proof, 
    'default_graph_version' => '2.8', 
    'default_access_token' => $app_access_token 
]); 

는 잘 모르겠어요를 그것. 위의 코드에서 여전히 동일한 오류가 발생합니다.

+0

일반적으로 공식 sdk를 사용할 때 appsecret_proof을 처리하지 않아도됩니다. 그렇지 않다면 모든 API 호출에 추가해야합니다. – luschn

+0

네, 설명서에서 알 수 있듯이 필수는 아니지만 'appsecret_proof'이 유효하지 않다는 오류 메시지가 표시되면 명시 적으로 사용하면 도움이 될 것이라고 생각했습니다. 하지만 같은 오류 메시지가 표시되거나 표시되지 않습니다. – funkylaundry

답변

0
get facebook mutual friend with app user or non app user 

    $access_token = "facebook user token"; 
    $facebook_id = "friend id"; 
    $app_secret = "facebook secret"; 
    $appsecret_proof = hash_hmac('sha256', $access_token, 
    $app_secret); 


    $graph_url = "https://graph.facebook.com/" . $facebook_id . "?fields=context.fields(all_mutual_friends.fields(id,name,picture.width(200).height(200)))" . "&access_token=" . $access_token . "&appsecret_proof=" . $appsecret_proof; 


    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_URL, $graph_url); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 

    $output = curl_exec($ch); 
    return $response_mutual = json_decode($output, true); 
    curl_close($ch);