コードでユーザーのGoogleアカウントID /ユーザー名にアクセスするにはどうすればよいですか? Webサービスを呼び出してデータを保存するアプリケーションを作成しており、データを送信する人の身元を確認したいと考えています。
私は同じ問題に遭遇し、これらの2つのリンクは私のために解決しました:
最初のものはこれです: ログインしたGoogleアカウントをAndroid携帯電話?
電話に関連付けられたアカウントを取得するためのコードを提示します。基本的に、次のようなものが必要です。
AccountManager manager = (AccountManager) getSystemService(ACCOUNT_SERVICE);
Account[] list = manager.getAccounts();
AndroidManifest.xmlにアクセス許可を追加するには
<uses-permission Android:name="Android.permission.GET_ACCOUNTS"></uses-permission>
<uses-permission Android:name="Android.permission.AUTHENTICATE_ACCOUNTS"></uses-permission>
さらに、エミュレーターを使用している場合は、次のリンクを使用してアカウントでセットアップすることができます。 Android Emulator-ユーザーアカウントの作成に関するトラブル
基本的に、SDKバージョンではなく、APIレベルに基づいてAndroidデバイスを作成する必要があります(通常行われているように)。
Googleユーザー名を取得するこのメソッド:
public String getUsername() {
AccountManager manager = AccountManager.get(this);
Account[] accounts = manager.getAccountsByType("com.google");
List<String> possibleEmails = new LinkedList<String>();
for (Account account : accounts) {
// TODO: Check possibleEmail against an email regex or treat
// account.name as an email address only for certain account.type
// values.
possibleEmails.add(account.name);
}
if (!possibleEmails.isEmpty() && possibleEmails.get(0) != null) {
String email = possibleEmails.get(0);
String[] parts = email.split("@");
if (parts.length > 0 && parts[0] != null)
return parts[0];
else
return null;
} else
return null;
}
単純なこのメソッド呼び出し....
そして、Gmail idでGoogleユーザーを取得します::
accounts = AccountManager.get(this).getAccounts();
Log.e("", "Size: " + accounts.length);
for (Account account : accounts) {
String possibleEmail = account.name;
String type = account.type;
if (type.equals("com.google")) {
strGmail = possibleEmail;
Log.e("", "Emails: " + strGmail);
break;
}
}
マニフェストに許可を追加した後。
<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
<uses-permission Android:name="Android.permission.GET_ACCOUNTS" />
サインインしているユーザーのプロファイル情報を取得するGoogleSignInResult.getSignInAccountメソッドを使用して、現在サインインしているユーザーのプロファイル情報を要求します。サインインインテントが成功した後、getSignInAccountメソッドを呼び出すことができます。
GoogleSignInResult result =
Auth.GoogleSignInApi.getSignInResultFromIntent(data);
GoogleSignInAccount acct = result.getSignInAccount();
String personName = acct.getDisplayName();
String personGivenName = acct.getGivenName();
String personFamilyName = acct.getFamilyName();
String personEmail = acct.getEmail();
String personId = acct.getId();
Uri personPhoto = acct.getPhotoUrl();
これらの行を使用しました:
AccountManager manager = AccountManager.get(this);
Account[] accounts = manager.getAccountsByType("com.google");
配列アカウントの長さは常に0です。
if (Plus.PeopleApi.getCurrentPerson(mGoogleApiClient) != null) {
Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient);
String userid=currentPerson.getId(); //BY THIS CODE YOU CAN GET CURRENT LOGIN USER ID
}
既存のGoogleアカウントをリストし、選択時にアクセストークンを生成するgoogleのサンプルがあります。そのアクセストークンをサーバーに送信して、関連する詳細を取得し、ユーザーを識別できます。
SCOPEを変更する必要があるため、アクセストークンから電子メールIDを取得することもできます
My Post を実行してください