2014-01-07 5 views
3

내 페이스 북 계정에 앱을 만들고 내 액세스 토큰 (php)을 사용하여 친구에게 게시물을 게시했습니다. API 인수에 잘못된 appsecret_proof이 제공되었습니다.

그러나 다른 사용자가 내 응용 프로그램 ID와 비밀 오류를 얻기를 사용하여 친구에게 게시 할 수 없습니다

API를 인수에 제공

잘못된 appsecret_proof

난이 불가능

내 앱 설정에서 필요한 앱 비밀 증명

아무 해결책 나주세요?

public function facebookUsershare() { 
require '../facebook/src/facebook.php'; $facebook = new Facebook(array('appId' => 'app  id', 'secret' => 'secret_key',)); 

$privacy = array('description' => 'Vladimir Sergeevich', 'value' => 'CUSTOM', 'friends' =>'friend id' 'allow' => 'loged in user'); 
try { 
$result = $facebook->api('/me/feed', 'POST', array("access_token" => 'access_token', 'picture' => "path to image", 'link' => "gmail.com";, 'name' => "Go wi6 7", 'caption' => "capn", 'privacy' => json_encode($privacy))); 

echo 'Successfully posted to Facebook Personal Profile'; //return $facebookfrndids; } catch(Exception $e) { 
echo $e->getMessage(); 
return false; } 
+0

코드는 어디에 있습니까? – Raptor

+0

코멘트에 코드를 게시하는 대신 질문을 편집해야합니다. – Raptor

답변

5

마침내 내가 대답 .... 응용 프로그램의 고급 설정에서 비활성화 필수 응용 프로그램 비밀 증거를 얻고, base_facebook.php SDK를 documentation에 관해서는

if (isset($params['access_token'])) { 
    $params['appsecret_proof'] = $this->getAppSecretProof($params['access_token']); 
} 
+2

이렇게하면 안됩니다. php sdk 파일을 업데이트하십시오. – astroanu

+5

SDK v4.0.11에서이 컨트롤을 제어하기 위해'FacebookSession :: enableAppSecretProof (false);'를 사용할 수 있습니다 –

+0

당신은 FacebookSession :: enableAppSecretProof (false); 또는 당신은 페이스 북의 애플 리케이션 콘솔에서 응용 프로그램 비밀 증명이 필요합니다. 공식 페이스 북 SDK를 사용할 때 웹 서버에서 페이스 북 앱을 정확하게 비밀로 설정하면 아무 것도 할 필요가 없습니다. – cwhsu

1

에 다음 코드를 주석 :

그래프 API 호출은 클라이언트의 대신 클라이언트 또는 서버에서 수행 할 수 있습니다. 서버로부터의 호출은 appsecret_proof이라는 매개 변수를 추가하여보다 안전하게 보호 할 수 있습니다.

따라서 추가 매개 변수 appsecret_proofaccess_token과 토대로 지정해야합니다. appsecret_proof은 앱 기밀로 서명 한 access_token의 디지털 서명입니다. 서명은 access_token을 확인해야합니다. appsecret_proof를 얻으려면이 같은 서명을 계산해야합니다

secret = 'app secret' 
token = 'access token' 
digest = OpenSSL::Digest.new('sha256') 
proof = OpenSSL::HMAC.digest(digest, secret, token) 

# result params: 
"access_token=#{token}&appsecret_proof=#{proof}" 

예는 루비 언어에 있지만이 언어 문제가되지 않습니다. 언어 설명서를 참조하여 hmac 서명 api를 참조하십시오.

+0

이이 'appsecret_proof'을 통과해야합니다. 나는 PHP를 사용하고 있습니다. – software

+0

access_token이있는 togater, 요청 본문에 있음 – oklas