안녕하세요, PHP에서 LinkedIn의 OAuth를 사용하려고합니다. 요청 토큰을 얻는 첫 번째 단계에서 멈추었습니다. 제가 아는 것은 서버에 값을 게시하고 토큰을 되 찾는 것입니다. 그래서 문서화 된 args를 'https://api.linkedin.com/uas/oauth/requestToken'에 게시하면 400 오류가 발생합니다. - 난 그냥 리조트는이 문제를 해결하기 위해 다른 사람의 라이브러리를 사용하지 않으려는 내 POST의 인수가 올바른지하지만 어떤 도움은 매우 감사합니다 생각하지 않습니다LinkedIn 요청 토큰을 얻으려면 어떻게해야합니까?
$postArr = array();
//$postArr["oauth_callback"] = ""; idk they said this was optional...
$postArr["oauth_consumer_key"] = "ForBritishEyesOnly"; //is this the application secret key or the api key?
$postArr["oauth_nonce"] = "UltraRandomNonceFTW";
$postArr["oauth_timestamp"] = time();
$postArr["oauth_signature_method"] = "HMAC-SHA1"; //lolwut
$postArr["oauth_version"] = "1.0";
$params = array('http'=>array('method'=>'post','content'=>http_build_query($postArr)));
$context = stream_context_create($params);
$stream = file_get_contents('https://api.linkedin.com/uas/oauth/requestToken', false, $context);
:
여기에 요청합니다.
------- 편집 : 제임스 입력 당 ATTEMPT 2 --------- 확인
그래서 당신은 나를 보내신 테스트 링크를 호출하는 여기 메신저. 나는 입니다. 실제로 응답을받을 수는 있지만 내 서명 (큰 놀라움, 알고 있습니다)과 같지 않습니다. 암호화가 망가 졌을까요? 제임스
에 의해//setup GET args
$url = "http://term.ie/oauth/example/request_token.php?";
$url .= "oauth_version=1.0&";
$url .= "oauth_nonce=" . rand(0, 100000) . "&";
$url .= "oauth_timestamp=" . time() . "&";
$url .= "oauth_consumer_key=key&";
$url .= "oauth_signature_method=HMAC-SHA1&";
//encrypt the request according to 'secret'
$sig = urlencode(base64_encode(hash_hmac("sha1", $url, "secret")));
//append the url encoded signature as the final GET arg
$url .= "oauth_signature=" . $sig;
//do it to it
echo file_get_contents($url);
편집
시도 :
//setup GET args
$url = "http://term.ie/oauth/example/request_token.php?";
$url .= "oauth_consumer_key=key&";
$url .= "oauth_nonce=" . rand(0, 100000) . "&";
$url .= "oauth_signature_method=HMAC-SHA1&";
$url .= "oauth_timestamp=" . time() . "&";
$url .= "oauth_version=1.0&";
괜찮 았어. 내가 실제로 API 요청을하는 마지막 단계에서이 코드로 문제가 생겼다. 그것은 나쁜 서명 이었지만 모든 단계에서 동일한 루틴이고 다른 시그니처는 정상적으로 작동했기 때문에 당황 스러웠습니다. API 요청 URL에'~'문자가 들어 있습니다. 분명히,이 캐릭터는 ** 기본 문자열에 인코딩 된 URL이 아닌 **입니다! 기본 문자열을 만들 때 **이 stir_replace ('% 7E', '~', rawurlencode ($ endpoint)) **로 변경해야 ** urlencode ($ endpoint) . –