Итак, я реализовал Google Oauth 2.0 для приложения Android для группового проекта. Я могу войти, используя свою учетную запись Google, но мой партнер не может войти с помощью своей учетной записи Google. Когда я вхожу в систему, происходит переход к новому действию, в котором отображаются мое имя, адрес электронной почты и фотография профиля на основе данных моей учетной записи Google. Аккаунт Google объявлен как глобальная переменная в классе sharedVars. Когда мой партнер пытается войти в систему, приложение либо вылетает, либо останавливается при первом действии.
Они вытягивают его из Github, и у меня есть настройка токенов Oauth, которая работает для меня, но не для моего партнера. Я попытался добавить их SHA-1, но это также не работает. Мне было интересно, что, возможно, мне нужно куда-нибудь добавить секретный файл JSON клиента в проект, но я не уверен, куда я его положу.
Моя основная деятельность
public class MainActivity extends AppCompatActivity implements View.OnClickListener, GoogleApiClient.OnConnectionFailedListener {
private LinearLayout profileSection;
private Button signOut;
private Button passProf;
private SignInButton signIn;
private TextView Name,Email;
private ImageView profilePic;
private GoogleApiClient googleApiClient;
private static final int REQ_CODE = 9001;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GoogleSignInOptions signInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestEmail().build();
googleApiClient = new GoogleApiClient.Builder(this).enableAutoManage(this,this).addApi(Auth.GOOGLE_SIGN_IN_API,signInOptions).build();
}
@Override
public void onClick(View v) {
switch(v.getId())
{
case R.id.sign_in_button:
signIn();
break;
}
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
private void signIn()
{
Intent intent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient);
startActivityForResult(intent,REQ_CODE);
}
private void handleResult(GoogleSignInResult result)
{
if(result.isSuccess())
{
((sharedVars)this.getApplication()).setGoogleAccount(result.getSignInAccount());
Intent showGoogleInfo = new Intent(getApplicationContext(),GoogleInfo.class);
startActivity(showGoogleInfo);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == REQ_CODE)
{
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
handleResult(result);
}
}
}
Показать активность профиля
public class GoogleInfo extends AppCompatActivity implements View.OnClickListener {
private LinearLayout profileSection;
private Button signOut;
private Button passProf;
private SignInButton signIn;
private TextView Name,Email;
private ImageView profilePic;
private GoogleApiClient googleApiClient;
private static final int REQ_CODE = 9001;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.google_info);
Name = (TextView)findViewById(R.id.nameDisplay);
Email = (TextView)findViewById(R.id.emailDisplay);
profilePic = (ImageView)findViewById(R.id.prof_pic);
signOut = (Button)findViewById(R.id.bn_signOut);
passProf = (Button)findViewById(R.id.passProf);
signOut.setOnClickListener(this);
passProf.setOnClickListener(this);
Name.setText(((sharedVars) this.getApplication()).name);
Email.setText(((sharedVars) this.getApplication()).email);
Glide.with(this).load(((sharedVars) this.getApplication()).imgURL).into(profilePic);
}
@Override
public void onClick(View v) {
switch(v.getId())
{
case R.id.bn_signOut:
signOut();
break;
case R.id.passProf:
Intent intent1 = new Intent(getApplicationContext(), PassengerProfile.class);
startActivity(intent1);
break;
}
}
private void signOut()
{
Auth.GoogleSignInApi.signOut(googleApiClient).setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(@NonNull Status status) {
}
});
Intent signOut = new Intent(getApplicationContext(),MainActivity.class);
startActivity(signOut);
}
}