2013-02-27 4 views
10

Ich folgte all diesen Schritten.Wie bekomme ich Benutzer-E-Mail mit Google Access Token?

https://developers.google.com/+/web/signin/

Ich habe Client-ID und Client-Schlüssel.

Ich habe jetzt Zugang Token, wie kann ich Benutzerprofil und E-Mail mit Access-Token bekommen? Und wie überprüft man, ob sich der Benutzer angemeldet hat oder nicht?

+0

Wie erhalten Sie Zugriffstoken? – selvan

+0

@konga raju wie hast du den Token bekommen kannst du mir bitte die Schritte dank –

Antwort

4

versuchen diese

$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

noch einen .. wie kann ich angemeldet oder nicht onload überprüfen. –

+0

@KongaRaju, benutze authResult ['status'] ['signed_in'] um zu überprüfen, ob in –

+0

@dino wie kann man diesen Token erhalten können Sie mir bitte teilen Sie Ihre Kommentare danke –

17

OAuth2 Verwenden Sie Berechtigungen über den Umfang Parameter anfordern können. (Documentation.) Ich stelle mir vor, die Bereiche, die Sie wollen, sind und https://www.googleapis.com/auth/userinfo.profile.

Dann ist es eine einfache Sache, die Profilinformationen zu erhalten, sobald Sie Ihr Zugriffs-Token erhalten haben. (Ich nehme an, Sie haben es geschafft, die zurückAutorisierungsCode für ein Zugriffstoken einzulösen?) Nur eine GET-Anfrage machen zu https://www.googleapis.com/oauth2/v1/userinfo?access_token= {accessToken}, die ein JSON-Array von Profildaten zurückgibt, einschließlich 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" 
} 

keine Garantien, aber versuchen Sie dies:

$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

wie Login-Status zu überprüfen –

+0

Wenn Sie den Zugriff haben Token dann bedeutet es, dass Sie einfach eingeloggt sind – Vineet1982

+0

Ich meine, wenn ich Zugangstoken bekomme, kann ich Zugangstoken erhalten, wenn Benutzer auf Login klickt oder wenn Seite mit Login-Button lädt –

1

Sie fügen Sie einfach diese Zeile in Ihre scope Öffnen Sie Ihre Application.cfc und dann diesen Code hinzufügen

 <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"} /> 

Jetzt können Sie E-Mail von der Funktion, die Sie mögen diese

<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> 

Hoffnung nennen können dies viele Menschen, diese zu lösen helfen. :)

Verwandte Themen