2015-12-16 24 views
5

Vì vậy, vấn đề mà dự án của tôi gặp phải là đăng nhập qua google không hoạt động nhất quán. Tức là, nó hoạt động cho bạn của tôi và không phải tôi từ máy tính của tôi, mặc dù nó làm việc cho tôi hôm qua trước khi lau điện thoại của tôi (điện thoại bị hỏng). Mã đăng nhập của chúng tôi là tiêu chuẩn cho đăng nhập bằng google và vấn đề là kết quả tiếp tục trả về false Tôi nghĩ vậy. mã:Đăng nhập Google không hoạt động trên Android?

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); 
    } 

Tôi nghĩ rằng tôi đã thiết lập thông tin đăng nhập của ứng dụng chính xác, như trước đây tôi đã làm việc từ máy tính để bàn trước khi xóa điện thoại. Đáng chú ý, bạn tôi có cùng một vấn đề làm việc từ máy tính xách tay của mình, nhưng không có vấn đề làm việc từ máy tính để bàn của mình. Bạn không chắc chắn những gì đang lên; bất kỳ đề xuất?

Nhật ký từ 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: [email protected] time:3231916 
12-16 18:48:43.962 27375-27375/oose2017.place2b V/ActivityThread: updateVisibility : ActivityRecord{1458bd29 [email protected] {oose2017.place2b/oose2017.place2b.interfaces.Welcome.WelcomeScreen}} show : true 
12-16 18:48:43.962 27375-27375/oose2017.place2b V/ActivityThread: updateVisibility : ActivityRecord{d3e4299 [email protected] {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: [email protected] time:3236507 
+0

Chỉ cần làm rõ, cửa sổ đăng nhập đang hiển thị, đúng không? Và sau đó khi bạn nhấp vào đăng nhập, đăng nhập chỉ thất bại? – KodyVanRy

+0

@ DuhProgrammer13: vâng, đó là trường hợp. – bianca

+0

bất kỳ lực kéo nào về vấn đề này? Tôi cũng nhận được vấn đề này trong mã mẫu của họ. – bianca

Trả lời

0

Bạn cần phải đính kèm chìa khóa khách hàng Android của bạn khi tạo GoogleSignInOptions như thế này

signInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN). 
      requestScopes(new Scope(Scopes.EMAIL)). 
      requestEmail(). 
      requestIdToken(getString(R.string.client_id)). 
      build(); 
5

tôi đã cùng một vấn đề. tôi giải quyết nó bằng cách làm như sau:

  1. tôi đến build.gradle tôi (ứng dụng), bên trong defaultConfig và thay đổi applicationId tên gói của tôi (Tôi không biết tại sao nó wasnt cùng ban đầu). Tôi chuyển compile 'com.google.android.gms:play-services-auth:8.3.0'-compile 'com.google.android.gms:play-services-auth:8.4.0' Hãy chắc chắn rằng apply plugin: 'com.google.gms.google-services' là ở dưới cùng của build.gradle của bạn (ứng dụng) tức là sau khi sự phụ thuộc

  2. tôi tạo ra một mới quan trọng SHA-1. Để tạo khóa SHA-1, hãy dán mã này vào thiết bị đầu cuối của bạn: keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android rồi chuyển đến credentials page và chọn dự án của bạn.

  3. trong ứng dụng khách OAuth 2.0, nhấp vào khóa ứng dụng khách Android của bạn. dán khóa SHA-1 bạn đã tạo và tên gói của bạn theo chỉ dẫn. nhấp vào để lưu.

    1. tải xuống tệp google-services.json mới và dán vào ứng dụng/thư mục của bạn.

Sau đó thử đăng nhập lại. Hy vọng nó sẽ hoạt động. Để biết thêm thông tin, hãy xem postthis as well này. Nó đã giúp tôi giải quyết được tôi

+0

Điểm 3 và 4 là vấn đề của tôi. Cảm ơn người đàn ông –

+0

bạn được chào đón. Vui mừng được giúp đỡ – NezSpencer

Các vấn đề liên quan