0

ich versuche erzeugen Server Auth Code in androidGoogle-Login von Android und Access-Auth-Token für Server

gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
      .requestEmail() 
      .requestScopes(new Scope(Scopes.DRIVE_APPFOLDER)) 
      .requestServerAuthCode(getString(R.string.server_client_id), false) 
      .build(); 

Dann habe ich versucht, Server Auth-Code wie diese zu erhalten.

result.requestServerAuthCode(getString(R.string.server_client_id), false) 

Angenommen, ich habe einen Auth-Token wie 'bla bla bla';

Dann Laravel Persönlichkeit des öffentlichen Lebens mit I Benutzer auf der Serverseite

Socialize::driver('google')->userFromToken('bla bla bla') 

zu bekommen versuche mich

Es zeigt Fehler

GuzzleHttp\Exception\ClientException with message 'Client error: GET https://www.googleapis.com/plus/v1/people/me?prettyPrint=false resulted in a 401 Unauthorized` response: {"error":{"errors":[{"domain":"global","reason":"authError","message":"Invalid Credentials","locationType":"header","loc (truncated...)

+0

verwenden, die Auth-Code, um das Zugriffstoken zu erhalten, sehen https://developers.google.com/identity/protocols/OAuth2, dann ist die Verwendung Zugriffstoken für diesen Endpunkt – BNK

+0

Vielen Dank für Ihre Antwort! Ich habe dafür im Internet gesucht. Kannst du mir zeigen, wie man access_token von PHP bekommt oder einfach curl @BNK –

+0

Sorry, ich bin nicht vertraut mit PHP und Curl, aber ich denke, dass Sie mehr unter https://github.com/google/google-api-php finden können -client und http://stackoverflow.com/questions/28390718/not-able-to-fetch-google-oauth-2-0-access-token – BNK

Antwort

1

Eigentlich der Code von Google auf Android gesandt hat, ist nicht das Zugriffstoken Get Access Token können Sie dies auf Laravel Controller tun.

Installieren Sie diesen Komponisten Bibliothek https://github.com/pulkitjalan/google-apiclient

$client = new \PulkitJalan\Google\Client(['client_id' => 'YOUR_CLIENT_ID', 'client_secret' => 'YOUR_SECRET', 'redirect_uri' => 'YOUR_REDIRECT_URI', 'developer_key' => 'YOUR_KEY']); 
$google = $client->getClient(); 
$google->authenticate($token); 
$access_token = $client->getAccessToken()["access_token"]; 

//and now here you go 
$user = Socialize::driver('google')->userFromToken($access_token); 
+0

cool das ist genial – user3470929

0

Der einfachste Weg, um die Google_Client Klasse zu verwenden ist, die von Google zur Verfügung gestellt wird. Sie können es here

finden Jetzt haben Sie zwei Optionen bekam:

  1. Sie eine id_token an den Server senden kann, und bestätigen Sie es so wie der Link sagte und dann holen Sie einfach die Benutzerinfo von dem Objekt erhalten.
  2. Sie können die backend_auth_code an den Server senden die statt id_token, und dann die Methode verwenden fetchAccessTokenWithAuthCode ($ code) der Google_Client Klasse. Dies gibt Ihnen das Zugriffstoken, ID-Token und andere Sachen. Sie können dann mit, dass access_token mit Laravel Socialite

    $client = new Google_Client([ 
        'client_id' => config('services.google.client_id'), 
        'client_secret' => config('services.google.client_secret') 
    ]); 
    
    $data = $client->fetchAccessTokenWithAuthCode($code); 
    
    $user = Socialite::driver('google')->scopes(['profile','email'])->userFromToken($data['access_token']);