2012-09-25 2 views
1

현재 Google 판독기 API에 액세스하기 위해 OAuth 2.0을 사용하고 있습니다. 성공적으로 "코드"와 "상태"를 URL에 반환했습니다. 지금은 액세스 토큰을 받기 위해 필요한 매개 변수를 전달하기 위해 post 메소드를 사용하고 있습니다. 나는 아주 잠시 동안 바이올린을 켜는 된 모든 내가 가지고 것은 :Google API OAuth 2.0

{ "error": "invalid_request" } 

내 코드는 다음과 같습니다 : 사전에

<?php 

session_start(); 

$code = $_GET['code']; 
$state = $_GET['state']; 

if ((!is_numeric($state)) || ($state != $_SESSION['state'])) { 
    throw new Exception('Error validating state.'); 
} 

$accessTokenExchangeUrl = 'https://accounts.google.com/o/oauth2/token'; 
$redirectUriPath = '/authentication.php'; 

$accessTokenExchangeParams = array(
    'code' => $code, 
    'client_id' => 'xxxxx', 
    'client_secret' => 'xxxxx', 
    'redirect_uri' => (isset($_SERVER['HTTPS'])?'https://':'http://') . $_SERVER['HTTP_HOST'] . $redirectUriPath, 
    'grant_type' => 'authorization_code' 
    ); 


$goToUrl = $accessTokenExchangeUrl . '?' . http_build_query($accessTokenExchangeParams); 

?> 

<!DOCTYPE HTML> 
<html> 
<head> 
    <title></title> 
</head> 

<body> 

    <form action=<?php echo $goToUrl; ?> method="post"> 
     <input type="submit" value="Click Me!"> 
    </form> 

</body> 

</html> 

감사합니다!

답변

0

쿼리 문자열 대신에 POST, POST 요청 본문에 입력 매개 변수로 code, client_id 등의 변수를 넣으려고 했습니까? Google 예제 demonstrate it that way.

following the OAuth 2 spec 인 경우 쿼리 문자열에 포함하면 안되는 보안상의 이유가 있습니다.

+0

감사합니다. 내 매개 변수를 전달하기 위해 맞춤 PHP CURL 함수를 만들었으며 모든 것이 올바르게 작동하고 있습니다. :) – onlydrinktea