2017-01-25 3 views
1

OAUTH 2.0 코드를 호출하는 모든 URI를 PHP 라이브러리 또는 개발자 콘솔 자격증 명으로 리다이렉트하는 페이지에 넣었습니다. 슬래시없이.Google OAuth2 모든 가능한 URI가 콘솔에있을 때 redirect_uri_mismatch

이 오류가 표시되는 페이지의 정확한 URI는 콘솔에 있습니다. 현재 URI에 대한 이야기가 아닌가, 발신 URI인가? 콘솔에 있기 때문에 여전히 이해가되지 않습니다.

이 오류가 나타나는 URI와 콘솔에있는 URI의 유일한 차이점은 끝에 # url 조각이 있다는 것입니다. 그러나 콘솔에 추가하려고하면 오류가 발생합니다. 조각이 허용되지 않기 때문에 가정합니다.

나는이 조각은 어디에서 오는가 모르겠지만, 내가 그렇게처럼 내 인증 코드를 얻을 후 필자는 PHP 헤더의 위치를 ​​변경하여 페이지에 무엇입니까 :의

return header('Location: https://website.com/m/?mail=tokened');

URI를 오류가있는 페이지와 위의 코드 행은 다음과 같습니다. https://website.com/m/?mail=tokened#이고 콘솔에있는 URI는 https://website.com/m/?mail=tokenedhttps://website.com/m?mail=tokened입니다.

업데이트 : (2) {[ "오류"] => 문자열 (21) "redirect_uri_mismatch"[ "ERROR_DESCRIPTION"] => 문자열

배열 : 여기

내가 무엇입니까 정확한 오류입니다 (11)이 페이지에서 "잘못된 요청"}

:

: 여기 https://keyreader.xyz/m?mail=tokened

는 dev에 콘솔 자격 증명의 스크린 샷입니다 여기

그리고내가 사용하고있는 코드입니다 :

<?php 
session_start(); 
if(isset($_GET['mail']) && $_GET['mail']==='approved'){ 
    setcookie('authCode', $_GET['code'], time()+(60*60), '/'); 
    return header('Location: https://keyreader.xyz/m/?mail=tokened'); 
} 
if(isset($_GET['mail']) && $_GET['mail']==='tokened'){ 
    require_once 'php/vendor/autoload.php'; 
    $client = new Google_Client(); 
    $client->setAuthConfig('php/client_secret.json'); 
    $client->setAccessType('offline'); 
    $client->setApprovalPrompt('force'); 
    $client->addScope(array('email', 'profile')); 
    var_dump($client->fetchAccessTokenWithAuthCode(urldecode($_COOKIE['authCode']))); 
} ?> 

그래서 내가 인증 코드를 가져 오는하고 내가 생각했기 때문에 쿠키에 있음을 저장한다는 사실 그 값으로 URL의 코드 매개 변수 다른 코드의 모든 것이 URL이 매번 다르므로 모든 것이 리디렉션 오류의 원인이었습니다. 콘솔에 넣을 수 없습니다. 그런 다음 url에 code 매개 변수가없는 동일한 페이지로 리디렉션하고 액세스 토큰을 가져옵니다.

+0

확실하지 않지만 나에게 일어난 일입니다. 리디렉션 URI를 설정 한 후 클라이언트 자격 증명 json 파일을 다시 다운로드하고 다시 시도 할 수 있습니까? – Morfinismo

+0

개발자 콘솔에 코드 및 설정 스크린 샷을 게시하십시오. http://stackoverflow.com/help/mcve – DaImTo

+0

@DaIm 사과에 대해, 나는 오류의 의미를 오해하고 싶었지만 코드와 스크린 샷으로 내 질문을 업데이트했습니다. 희망이 당신이 나를 도울 수 있습니다. – wordSmith

답변

1

잘 모르겠지만 개발자 콘솔에서 모든 URL을 제거한 다음 다시 입력 한 다음 새 client_secrets 파일을 다운로드 한 것입니다.

+2

그건 정확히 내가 말한거야.이제는 작동하는 것을 알면 좋습니다. – Morfinismo

0

리디렉션 URL을 변경 한 후 리디렉션 URL이 포함되어 있으므로 client_id.json 파일을 업데이트해야합니다.

{"web": 
{ 
    "client_id":"xxxx.apps.googleusercontent.com", 
    "project_id":"some-xxx", 
    "auth_uri":"https://accounts.google.com/o/oauth2/auth", 
    "token_uri":"https://accounts.google.com/o/oauth2/token", 
    "auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs", 
    "client_secret":"xxxxxxxxxx", 
    "redirect_uris":[ 
     "http://website.com/getGoogleUrl", 
     "http://website.dev/getGoogleUrl" 
    ] 
}} 

그리고 redirect_uris 목록에 현재 리디렉션 URL이 먼저 와야합니다.