2017-04-21 3 views
1

Ich bin neu in Android-Entwicklung. Ich bin in einer Situation, in der ich das Geschlecht und das Geburtsdatum für den Nutzer benötige, der sich mit seinem Google-Konto angemeldet hat.Server-Client-Geheimnis meines Projekts mit Oauth nicht gefunden

Dafür ich den Code verwende die

class GetGendersTask extends AsyncTask<GoogleSignInAccount, Void, List<Gender>> { 
    @Override 
    protected List<Gender> doInBackground(GoogleSignInAccount... googleSignInAccounts) { 
     List<Gender> genderList = new ArrayList<>(); 
     try { 
      HttpTransport httpTransport = new NetHttpTransport(); 
      JacksonFactory jsonFactory = JacksonFactory.getDefaultInstance(); 

      //Redirect URL for web based applications. 
      // Can be empty too. 
      String redirectUrl = "urn:ietf:wg:oauth:2.0:oob"; 

      // Exchange auth code for access token 
      GoogleTokenResponse tokenResponse = new GoogleAuthorizationCodeTokenRequest(
        httpTransport, 
        jsonFactory, 
        getApplicationContext().getString(R.string.server_client_id), 
        getApplicationContext().getString(R.string.server_client_secret), 
        googleSignInAccounts[0].getServerAuthCode(), 
        redirectUrl 
      ).execute(); 

      GoogleCredential credential = new GoogleCredential.Builder() 
        .setClientSecrets(
          getApplicationContext().getString(R.string.server_client_id), 
          getApplicationContext().getString(R.string.server_client_secret) 
        ) 
        .setTransport(httpTransport) 
        .setJsonFactory(jsonFactory) 
        .build(); 

      credential.setFromTokenResponse(tokenResponse); 

      People peopleService = new People.Builder(httpTransport, jsonFactory, credential) 
        .setApplicationName("My Application Name") 
        .build(); 

      // Get the user's profile 
      Person profile = peopleService.people().get("people/me").execute(); 
      genderList.addAll(profile.getGenders()); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return genderList; 
    } 

    @Override 
    protected void onPostExecute(List<Gender> genders) { 
     super.onPostExecute(genders); 
     // iterate through the list of Genders to 
     // get the gender value (male, female, other) 
     for (Gender gender : genders) { 
      String genderValue = gender.getValue(); 
     } 
    } 
} 

unten

gezeigt wird, um erfolgreich den Code auszuführen, die oben dargestellt ist, muss ich die server_client_id und server_client_secret. Nachdem ich in die Entwicklerkonsole meiner Anwendung gegangen bin, habe ich meine server_client_id gefunden, aber leider kann ich den Schlüssel server_client_secret nicht finden. Ich bin viel gesurft und habe nicht die Antwort gefunden. Ich wusste, dass viele Leute diese Frage bereits angesprochen haben. Aber tut mir Leid, dass ich die Antwort nicht finden kann.

Könnte mir jemand helfen, dieses Problem zu lösen.

Vielen Dank im Voraus. :)

Antwort

0

Android verwendet keine Clientgeheimnisse. Da es ein Gerät ist, das der Benutzer hält, wäre es nicht lange ein Geheimnis. Wenn Sie ein Clientgeheimnis für Ihr Projekt benötigen, rufen Sie die dev-Konsole auf und erstellen Sie einen weiteren Satz von Anmeldeinformationen unter Angabe von Web App.

+0

Gibt es einen anderen Weg, um die persönlichen Informationen wie Geschlecht und Geburtsdatum zu erhalten, ohne diesen geheimen Schlüssel des Server-Clients zu verwenden? –

+0

Siehe https://developers.google.com/+/web/api/rest/latest/people/get und die vielen Fragen zu SO, die diese Frage bereits gestellt haben. zB http://stackoverflow.com/questions/7349747/unable-to-get-user-profile-from-google-using-google-apis-in-android – pinoyyid

+0

Vielen Dank :) –

Verwandte Themen