2017-03-10 5 views
2

まず、古い方法で性別を取得したいのですが、既に廃止予定だと言われています。getGender()でエラーが発生します。それはGoogle People API scopes.profileで性別エラーが発生する

GoogleSignInAccount acct = result.getSignInAccount(); 
Intent Home=new Intent(this,HomeActivity.class); 
      Home.putExtra("name",acct.getDisplayName()); 
      Home.putExtra("email", acct.getEmail()); 
      Home.putExtra("URL",acct.getPhotoUrl()); 
      Home.putExtra("URL",acct.getGender()); // cannot resolve method 
      startActivity(Home); 

を認識し、私はここを検索し、私はこの民APIについて多くの話題を見つけることができなかったことを少し驚い取得、1つの人気の答えは、しかしイザベラ・チェンからではないです。

/** Global instance of the HTTP transport. */ 
private static HttpTransport HTTP_TRANSPORT = AndroidHttp.newCompatibleTransport(); 
/** Global instance of the JSON factory. */ 
private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance(); 

// On worker thread 
GoogleAccountCredential credential = 
     GoogleAccountCredential.usingOAuth2(MainActivity.this, Scopes.PROFILE); 
credential.setSelectedAccount(
     new Account(googleSignInAccount.getEmail(), "com.google")); 
People service = new People.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential) 
       .setApplicationName(APPLICATION_NAME /* whatever you like */) 
       .build(); 
// All the person details 
Person meProfile = service.people().get("people/me").execute(); 
// e.g. Gender 
List<Gender> genders = meProfile.getGenders(); 
String gender = null; 
if (genders != null && genders.size() > 0) { 
    gender = genders.get(0).getValue(); 
} 

私はコードを再利用しようとしますが、Scopes.PROFILESでエラーが発生します。間違った第2の型の引数を言います...私は理解しません。ここ

は私のGoogleのコードです:

  //Initializing google signin option 
     gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
       .requestScopes(new Scope(Scopes.PLUS_LOGIN)) 
       .requestScopes(new Scope(Scopes.PROFILE)) 
       .requestProfile() 
       .requestEmail() 
       .build(); 


     gplus_button = (SignInButton) findViewById(R.id.sign_in_button); 
     gplus_button.setSize(SignInButton.SIZE_STANDARD); 
     gplus_button.setScopes(gso.getScopeArray()); 

     //Initializing google api client 
     mGoogleApiClient = new GoogleApiClient.Builder(this) 
       .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */) 
       .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
       .addApi(Plus.API) 
       .build(); 

私は残念ながら、私は両方の方法でエラーを取得し、働く何でも廃止予定のものを使用します。明確な質問の

編集:

非推奨メソッドのエラー:getGenderでエラーが発生しました();メソッドを解決できません

新しいメソッド:Scopes.PROFILEのエラー、アンドロイドスタジオの赤い下線は2番目のタイプの引数が間違っています。 'java.lang.String'が必要な型 'java.util.Collection'

+0

どういうところ? – DaImTo

+0

古いメソッドは、 "メソッドを解決することはできません"、新しいメソッドで、その間違ったタイプの第2引数(Scopes.PROFILE) –

答えて

2

同じ行に1つの以上のスコープを頼むことができます。

Scopes.PROFILEにはcollection/arrayを使用する必要があります。

Collection<String> scopes = new ArrayList<>(Collections.singletonList(Scopes.PROFILE)); 
GoogleAccountCredential credential = 
        GoogleAccountCredential.usingOAuth2(MainActivity.this, scopes); 

thx

+0

ねえ、1つの質問。性別のリストは何ですか? – Coeus

1

なぜ2つのスコープを要求していますか?必要のないPLUS_LOGINスコープラインを削除してください。 PROFILEスコープは、より多くの情報を提供します。あなたは単にこれを使うことができます。それとも、私は解決策を見つけたと思うような、

(新しいスコープ(Scopes.PLUS_LOGIN)、新しいスコープ(Scopes.PROFILE))

+0

あなたが正しいと言いました。 。しかし、それは今私の質問には本当に答えません。 –

関連する問題