2014-11-07 44 views
6

Tôi gặp sự cố với api kitkat trong khi tringy để nhận mã thông báo truy cập của dịch vụ tài khoản google, google music trong trường hợp của tôi. Vì vậy, nếu người dùng cố gắng nhận mã thông báo lúc đầu bằng cách sử dụng phương pháp tiếp theo:Tài khoản Google nhận Mã thông báo

public String getAuthToken(Account account) 
      throws AuthenticatorException, IOException { 
     String s1; 
     if (account == null) { 
      Log.e("MusicAuthInfo", "Given null account to MusicAuthInfo.getAuthToken()", new Throwable()); 
      throw new AuthenticatorException("Given null account to MusicAuthInfo.getAuthToken()"); 
     } 
     String s = getAuthTokenType(mContext); 
     try { 
      s1 = AccountManager.get(mContext).blockingGetAuthToken(account, s, true); 
     } catch (OperationCanceledException operationcanceledexception) { 
      throw new AuthenticatorException(operationcanceledexception); 
     } 
     if (s1 == null) { 
      throw new AuthenticatorException("Received null auth token."); 
     } 

     return s1; 
    } 

đây tôi nhận được s1 == null và thông báo hệ thống đẩy:

notification

Khi sử dụng máy trên thông báo, hộp thoại tiếp theo xuất hiện:

dialog

Khi người dùng nhấp "ok", tất cả các lần lặp tiếp theo sẽ nhận được mã thông báo ss

Câu hỏi: Làm cách nào để phá vỡ xác nhận này hoặc chỉ hiển thị hộp thoại mà không cần nhấp để thông báo?

Trả lời

2

Đây không phải là câu trả lời trực tiếp cho câu hỏi của bạn, thay vào đó bạn có thể sử dụng Dịch vụ của Google Play.

String token = GoogleAuthUtil.getToken(context, userEmail, "oauth2:https://mail.google.com/"); 

Bạn chỉ cần chỉ định phạm vi oauth2 bạn cần. Ví dụ: đối với Google+, bạn sẽ cần "https://www.googleapis.com/auth/plus.login" thay vì nội dung tôi đăng trong đoạn mã cho Gmail. Bạn cũng có thể chỉ định nhiều phạm vi trong một yêu cầu mã thông báo. Yêu cầu quyền xuất hiện ngay lập tức.

Bạn có thể đọc tất cả về nó ở đây: Authorizing with Google for REST APIs, Login scopes

+0

tôi không thể tìm thấy cơ hội cho google play Sservice nhạc – smail2133

+0

Vâng, để có được một cơ hội cho một mã thông báo trước tiên bạn cần phải có một ý tưởng mà API Bạn có tìm kiếm một phạm vi cho. Trong số các API có sẵn, không có Google Play Âm nhạc cụ thể. Bạn có thể kiểm tra tất cả chúng tại đây: [Sân chơi OAuth 2.0] (https://developers.google.com/oauthplayground/) và bạn cần đảm bảo API được bật trong [Bảng điều khiển dành cho nhà phát triển của Google] (bảng điều khiển https: // .developers.google.com/dự án). Kiểm tra API nào cung cấp cho bạn các đặc quyền bạn cần. Ví dụ: Google+ có thể bao gồm những thứ này. – Chris

-1

Giải Quyết. Cần sử dụng phương pháp này:

Bundle result = AccountManager.get(activity).getAuthToken(account, s, new Bundle(), activity, new AccountManagerCallback<Bundle>() { 
    @Override 
    public void run(AccountManagerFuture<Bundle> future) { 
     try { 
      Log.e("xxx", future.getResult().toString()); 
     } catch (OperationCanceledException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (AuthenticatorException e) { 
      e.printStackTrace(); 
     } 
    } 

}, null).getResult(); 
Các vấn đề liên quan