Android를 통해 Google 계정 ID / 사용자 이름에 액세스
코드에서 사용자의 Google 계정 ID / 사용자 이름에 어떻게 액세스합니까? 데이터를 저장하기 위해 웹 서비스를 호출하는 애플리케이션을 구축 중이며 데이터를 제출하는 사람의 신원을 확인하고 싶습니다.
나는 같은 문제에 부딪 혔고 다음 두 링크가 나를 위해 해결되었습니다.
첫 번째는 이것입니다 : 안드로이드 폰에서 로그인 한 구글 계정을 어떻게 검색합니까?
전화와 관련된 계정을 검색하기위한 코드를 제공합니다. 기본적으로 다음과 같은 것이 필요합니다.
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();
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
}
다음 라인을 사용했습니다.
AccountManager manager = AccountManager.get(this);
Account[] accounts = manager.getAccountsByType("com.google");
배열 계정의 길이는 항상 0입니다.
기존 Google 계정을 나열하고 선택시 액세스 토큰을 생성하는 google의 샘플이 있습니다. 해당 액세스 토큰을 서버로 보내 사용자를 식별하기 위해 관련 세부 정보를 검색 할 수 있습니다.
You can also get the email id from access token , for that you need to modify the SCOPE
Please go through My Post
String name = android.os.Build.USER;
if (!TextUtils.isEmpty(name)) {
nameEdit.setText(name);
}
참고URL : https://stackoverflow.com/questions/2245545/accessing-google-account-id-username-via-android
'IT TIP' 카테고리의 다른 글
| CFPrefsPlistSource iOS 10에서 값을 읽지 못했습니다. (0) | 2020.11.05 |
|---|---|
| C #에서 이름이있는 값 튜플에 별칭을 정의 할 수 있습니까? (0) | 2020.11.05 |
| mongodb에서 데이터 중복이 너무 많습니까? (0) | 2020.11.05 |
| CSS 픽셀이 분수 일 수 있습니까? (0) | 2020.11.05 |
| Angular 2의 동적 템플릿 URL (0) | 2020.11.05 |