所以我的项目遇到的一个问题是通过谷歌登录不能始终如一地工作.也就是说,它适用于我的朋友,而不是我的电脑,即使昨天在擦拭我的手机之前它对我有用(手机已损坏).我们的登录代码是谷歌登录的标准,问题是结果不断返回false我认为.代码:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.welcome_screen); findViewById(R.id.sign_in_button).setOnClickListener(this); GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .build(); mGoogleApiClient = new GoogleApiClient.Builder(this) .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */) .addApi(Auth.GOOGLE_SIGN_IN_API, gso) .build(); SignInButton signInButton = (SignInButton) findViewById(R.id.sign_in_button); signInButton.setSize(SignInButton.SIZE_STANDARD); signInButton.setScopes(gso.getScopeArray()); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.sign_in_button: signIn(); break; } } private void signIn() { Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); startActivityForResult(signInIntent, RC_SIGN_IN); } public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...); if (requestCode == RC_SIGN_IN) { GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); handleSignInResult(result); } } private void handleSignInResult(GoogleSignInResult result) { if (result.isSuccess()) { // Signed in successfully, show authenticated UI. GoogleSignInAccount acct = result.getSignInAccount(); // mStatusTextView.setText(getString(R.string.signed_in_fmt, acct.getDisplayName())); updateUI(acct); } else { // Signed out, show unauthenticated UI. noUpdateUI(); } } private void updateUI(GoogleSignInAccount acct) { Intent intent = new Intent(getApplicationContext(), HomeScreen.class); Bundle bundle = new Bundle(); bundle.putSerializable("NEW_USER", new ClientUser(acct)); intent.putExtras(bundle); startActivity(intent); } For some reason, the result is false: private void noUpdateUI() { System.out.println("**** Try again****"); // mStatusTextView.setText(R.string.signed_out); findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE); }
我想我已经正确设置了我的应用程序凭据,因为它在我擦拭手机之前从我的桌面上运行了.值得注意的是,我的朋友在他的笔记本电脑上也遇到了同样的问题,但是他的桌面没有问题.不知道发生了什么事; 有什么建议?
来自sys.out的日志:
12-16 18:48:43.282 27375-27375/oose2017.place2b D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN 12-16 18:48:43.412 27375-27375/oose2017.place2b I/Timeline: Timeline: Activity_launch_request id:oose2017.place2b time:3231784 12-16 18:48:43.452 27375-27375/oose2017.place2b D/Activity: performCreate Call Injection manager 12-16 18:48:43.462 27375-27375/oose2017.place2b I/InjectionManager: dispatchOnViewCreated > Target : com.google.android.gms.auth.api.signin.internal.SignInHubActivity isFragment :false 12-16 18:48:43.462 27375-27375/oose2017.place2b D/PhoneWindow: *FMB* installDecor mIsFloating : false 12-16 18:48:43.462 27375-27375/oose2017.place2b D/PhoneWindow: *FMB* installDecor flags : 8454400 12-16 18:48:43.462 27375-27375/oose2017.place2b D/SecWifiDisplayUtil: Metadata value : SecSettings2 12-16 18:48:43.472 27375-27375/oose2017.place2b D/PhoneWindow: *FMB* isFloatingMenuEnabled mFloatingMenuBtn : null 12-16 18:48:43.472 27375-27375/oose2017.place2b D/PhoneWindow: *FMB* isFloatingMenuEnabled return false 12-16 18:48:43.482 27375-27375/oose2017.place2b D/SRIB_DCS: log_dcs ThreadedRenderer::initialize entered! 12-16 18:48:43.492 27375-27584/oose2017.place2b D/mali_winsys: new_window_surface returns 0x3000, [1440x2560]-format:1 12-16 18:48:43.542 27375-27375/oose2017.place2b I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@174719e3 time:3231916 12-16 18:48:43.962 27375-27375/oose2017.place2b V/ActivityThread: updateVisibility : ActivityRecord{1458bd29 token=android.os.BinderProxy@e9978a8 {oose2017.place2b/oose2017.place2b.interfaces.Welcome.WelcomeScreen}} show : true 12-16 18:48:43.962 27375-27375/oose2017.place2b V/ActivityThread: updateVisibility : ActivityRecord{d3e4299 token=android.os.BinderProxy@174719e3 {oose2017.place2b/com.google.android.gms.auth.api.signin.internal.SignInHubActivity}} show : true 12-16 18:48:48.102 27375-27375/oose2017.place2b I/System.out: ***** Try again!***** 12-16 18:48:48.132 27375-27375/oose2017.place2b I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@e9978a8 time:3236507
小智.. 8
我有同样的问题.我通过以下方式解决了这个问题:
我去了我的build.gradle(app),在defaultConfig中,并将applicationId更改为我的包名(我不知道为什么它最初不同).我切换compile 'com.google.android.gms:play-services-auth:8.3.0'
到compile 'com.google.android.gms:play-services-auth:8.4.0'
确保apply plugin: 'com.google.gms.google-services'
位于build.gradle(app)的底部,即在依赖项之后
我生成了一个新的SHA-1密钥.要在终端中生成SHA-1密钥,请执行以下操作:keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
然后转到凭据页面并选择项目.
在OAuth 2.0客户端下,单击您的Android客户端密钥.粘贴您生成的SHA-1密钥和您指定的包名称.点击保存.
下载新的google-services.json文件并将其粘贴到您的app /目录中.
然后再次尝试登录.希望它应该工作.有关详细信息,请参阅此帖和此信息.它帮我解决了我的问题
我有同样的问题.我通过以下方式解决了这个问题:
我去了我的build.gradle(app),在defaultConfig中,并将applicationId更改为我的包名(我不知道为什么它最初不同).我切换compile 'com.google.android.gms:play-services-auth:8.3.0'
到compile 'com.google.android.gms:play-services-auth:8.4.0'
确保apply plugin: 'com.google.gms.google-services'
位于build.gradle(app)的底部,即在依赖项之后
我生成了一个新的SHA-1密钥.要在终端中生成SHA-1密钥,请执行以下操作:keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
然后转到凭据页面并选择项目.
在OAuth 2.0客户端下,单击您的Android客户端密钥.粘贴您生成的SHA-1密钥和您指定的包名称.点击保存.
下载新的google-services.json文件并将其粘贴到您的app /目录中.
然后再次尝试登录.希望它应该工作.有关详细信息,请参阅此帖和此信息.它帮我解决了我的问题