2013-02-27 13 views

risposta

4

provare questo

$accessToken = 'access token'; 
$userDetails = file_get_contents('https://www.googleapis.com/oauth2/v1/userinfo?access_token=' . $accessToken); 
$userData = json_decode($userDetails); 

if (!empty($userData)) { 

    $googleUserId = ''; 
    $googleEmail = ''; 
    $googleVerified = ''; 
    $googleName = ''; 
    $googleUserName = ''; 

    if (isset($userData->id)) { 
    $googleUserId = $userData->id; 
    } 
    if (isset($userData->email)) { 
    $googleEmail = $userData->email; 
    $googleEmailParts = explode("@", $googleEmail); 
    $googleUserName = $googleEmailParts[0]; 
    } 
    if (isset($userData->verified_email)) { 
    $googleVerified = $userData->verified_email; 
    } 
    if (isset($userData->name)) { 
    $googleName = $userData->name; 
    } 
} else { 

    echo "Not logged In"; 
} 
+0

uno di più .. come posso assegno firmato o no onload. –

+0

@KongaRaju, usa authResult ['status'] ['signed_in'] per verificare se è stato effettuato l'accesso a –

+0

@dino come si ottiene questo token puoi condividere i tuoi commenti grazie –

17

Utilizzando OAuth2, è possibile richiedere autorizzazioni tramite il parametro ambito. (Documentation.) Immagino che gli scopi desiderati sono https://www.googleapis.com/auth/userinfo.email e https://www.googleapis.com/auth/userinfo.profile.

Poi, è una questione semplice per avere le informazioni del profilo, una volta che hai ottenuto il tuo token di accesso. (Presumo che sei stato in grado di riscattare il codice di autorizzazione restituito per un token di accesso?) Basta fare una richiesta GET a https://www.googleapis.com/oauth2/v1/userinfo?access_token= {access token}, che restituisce una matrice JSON dei dati del profilo, tra cui e-mail:

{ 
    "id": "00000000000000", 
    "email": "[email protected]", 
    "verified_email": true, 
    "name": "Fred Example", 
    "given_name": "Fred", 
    "family_name": "Example", 
    "picture": "https://lh5.googleusercontent.com/-2Sv-4bBMLLA/AAAAAAAAAAI/AAAAAAAAABo/bEG4kI2mG0I/photo.jpg", 
    "gender": "male", 
    "locale": "en-US" 
} 

Non ci sono garanzie, ma provate questo:

$url = "https://www.googleapis.com/oauth2/v1/userinfo"; 
$request = apiClient::$io->makeRequest($client->sign(new apiHttpRequest($url, 'GET'))); 

if ((int)$request->getResponseHttpCode() == 200) { 
    $response = $request->getResponseBody(); 
    $decodedResponse = json_decode($response, true); 
    //process user info 
    } else { 
    $response = $request->getResponseBody(); 
    $decodedResponse = json_decode($response, true); 
    if ($decodedResponse != $response && $decodedResponse != null && $decodedResponse['error']) { 
     $response = $decodedResponse['error']; 
    } 
    } 
} 
+0

come verificare lo stato di login –

+0

Se hai accesso token quindi significa che hai effettuato l'accesso semplicemente – Vineet1982

+0

Voglio dire quando riceverò il token di accesso, posso ottenere il token di accesso quando l'utente fa clic sul login o quando la pagina si carica con il pulsante di login –

1

basta aggiungere questa linea nel vostro scope Aprire il Application.cfc e quindi aggiungere il codice

 <cfset request.oauthSettings = 
      {scope = "https://www.googleapis.com/auth/userinfo.email+https://www.googleapis.com/auth/userinfo.profile", 
            client_id = "Your-id", 
            client_secret = "your-secret", 
            redirect_uri = "redirect-page", 
            state = "optional"} /> 

Ora è possibile ottenere email da funzione che si può chiamare in questo modo

<cfscript>    
     public function getProfile(accesstoken) { 

      var h = new com.adobe.coldfusion.http(); 
      h.setURL("https://www.googleapis.com/oauth2/v1/userinfo"); 
      h.setMethod("get"); 
      h.addParam(type="header",name="Authorization",value="OAuth #accesstoken#"); 
      h.addParam(type="header",name="GData-Version",value="3"); 
      h.setResolveURL(true); 
      var result = h.send().getPrefix(); 
      return deserializeJSON(result.filecontent.toString()); 
     }  
    </cfscript> 

      <cfoutput> 
      <cfset show = getProfile(session.ga_accessToken)> 
      <cfdump var="#show#"> 
      </cfoutput> 

Spero che questo possa aiutare molte persone a risolvere questo problema. :)

Problemi correlati