2017-04-21 6 views
1

저는 Android 개발을 처음 사용했습니다. 나는 Google 계정을 사용하여 로그인 한 사용자의 성별과 생년월일이 필요한 상황에 처해 있습니다. 나는 성공적 위에 표시된 코드를 실행하려면Oauth를 사용하여 프로젝트의 서버 클라이언트 비밀 번호를 찾을 수 없습니다.

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(); 
     } 
    } 
} 

아래에 표시되는 코드를 사용하고이를 위해

, 나는 server_client_id 및 server_client_secret이 필요합니다. 내 응용 프로그램의 개발자 콘솔에 들어가서 server_client_id를 발견했지만 불행히도 server_client_secret 키를 찾을 수 없습니다. 나는 많은 서핑을했고 대답을 찾지 못했습니다. 많은 사람들이 이미이 쿼리를 처리 한 것을 알고있었습니다. 그러나 유감스럽게도 나는 대답을 찾을 수 없다.

아무도 내가이 문제를 해결할 수 있도록 도와 줄 수 있습니까?

미리 감사드립니다. :)

답변

0

Android는 클라이언트 비밀을 사용하지 않습니다. 사용자가 보유하고있는 장치이기 때문에 오랫동안 비밀이 아닙니다. 프로젝트의 클라이언트 비밀이 필요하면 dev 콘솔로 이동하여 Web App를 지정하여 추가 자격 증명 세트를 작성하십시오.

+0

그래서이 서버 클라이언트 비밀 키를 사용하지 않고 남녀 및 성 (DOB) 같은 개인 정보를 얻는 다른 방법이 있습니까? –

+0

https://developers.google.com/+/web/api/rest/latest/people/get 및 이미 해당 질문에 대한 많은 질문을 참조하십시오. 예 : http://stackoverflow.com/questions/7349747/unable-to-get-user-profile-from-google-using-google-apis-in-android – pinoyyid

+0

고맙습니다. :) –