2017-01-17 1 views
0

GOOGLE에서 OAuth 2.0을 사용합니다. 기호 "#"다음에 GET으로 값을 전달하는 방법은 무엇입니까?

나는 열 때 :

https://accounts.google.com/o/oauth2/auth?scope=openid+profile+email&response_type=token&redirect_uri=MYWEB&client_id=MYID.apps.googleusercontent.com 

내가 정확히 얻을 : (! Google은 유효한 토큰에 제공)

나는 구글이 나에게이 네 개의 매개 변수를 제공 무엇을 알 수없는
MYWEB/#access_token=BEAUTIFULL.TOKEN&token_type=Bearer&expires_in=3600&authuser=0&hd=MYEMAIL&session_state=BEAUTIFULL.SESSION&prompt=none 

이 :

authuser = 0 
hd = MYEMAIL 
session_state = BEAUTIFULL.SESSION 
prompt = none 

그러나 더 중요한 (내 게시물의 실제 동기는)

PHP 아니요 "#"기호가 GOOGLE의 답변에 존재하므로 내 서버/PHP는이 값을 사용하지 않습니다.

기호 "#"다음에 $ _SERVER [ 'QUERY_STRING'] (var => 값)을 모두 얻을 수있는 방법 ???

논리적으로 GOOGLE은이 "#"응답을 회피 한 다음, 왜/무엇을 위해이 기호가 응답에 있는지 알고 있습니다.

감사합니다.

답변

0

explode() 함수는 지정된 문자로 구분하여 각 부분을 배열에 저장합니다. 그것을 사용하여 문자열을 분리하고 먼저 &으로 각 키/값 쌍을 가져올 수 있습니다. 그런 다음 =하여 값에서 키를 분리하십시오.

그래서,이 당신을 위해 작동합니다 :

$input = 'MYWEB/#access_token=BEAUTIFULL.TOKEN&token_type=Bearer&expires_in=3600&authuser=0&hd=MYEMAIL&session_state=BEAUTIFULL.SESSION&prompt=none'; 
print_r(getGetVars($input)); 

function getGetVars($string){ 
    $output = Array(); 

    // find # 
    if(!$hashPos = strpos($string, '#')) return 'error: # not found'; 

    // trim string to only include text after # 
    $string = substr($string, $hashPos + 1); 

    // break string apart by & 
    $keysAndVals = explode('&', $string); 

    foreach($keysAndVals as $keyValString){ 
     // seperate key and value on each side of = 
     $keyValArray = explode('=', $keyValString); 

     $key = $keyValArray[0]; 
     $val = $keyValArray[1]; 

     $output[$key] = $val; 
    } 

    return $output; 
} 
+0

하지의 수는 "$ 입력 = XXX", 값이 더 스크립트에! 단지 문제가 더있다, $ _GET에 존재하지 않는다 "어떻게 폭발 할 할 ", 내 문제는 $ _GET 값을 얻을 수 있습니다. – Stackoverflow

+0

죄송합니다, 당신이 말한 것을 오해 한 것 같습니다. "내가 xxx에 갈 때"다음에 "정확히 zzz를 얻는다"는 것은 무엇을 의미합니까? – BizzyBob

+0

BB에 감사합니다. 정보는 $ _GET, SCRIPT에 존재합니다. – Stackoverflow

관련 문제