10

Để biết thêm ngữ cảnh, bài đăng này sau this one.GoogleAuthException khi nhận mã thông báo truy cập với ClientID

Để giải quyết vấn đề trước đây của tôi, tôi đã cố gắng để làm theo các giải pháp trình bày ở đây bởi Tim Bray: Verifying Back-End Calls from Android Apps

tôi tuyên bố hai dự án trong Google API Console để nhận được hai Client ID

  • Đầu tiên dưới dạng "Ứng dụng web" với "localhost" làm tên máy chủ (có quan trọng không?)
    • ID khách hàng: XXXXXXXXXX.apps.googleusercontent.com
  • Thứ hai là ứng dụng với tên gói theo quy định tại AndroidManifest.xml và SHA1 vân tay Android (thử với debug.keystore và .keystore [tôi])
    • Client ID: YYYYYYYYYY.apps. googleusercontent.com

Đáng tiếc là tôi đang phải đối mặt với một ngoại lệ ở bên Android:

com.google.android.gms.auth.GoogleAuthException: Unknown 
at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source) 
at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source) 
at fr.barles.android.activity.LoginActivity$1.doInBackground(LoginActivity.java:66) 
at fr.barles.android.activity.LoginActivity$1.doInBackground(LoginActivity.java:1) 
at android.os.AsyncTask$2.call(AsyncTask.java:185) 
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 
at java.lang.Thread.run(Thread.java:1102) 

Trên dòng:

return GoogleAuthUtil.getToken(LoginActivity.this, account[0], "audience:server:client_id:XXXXXXXXXX.apps.googleusercontent.com"); 

Những gì tôi đang làm sai?

Cảm ơn trước

+1

Vì vậy, bạn đã thực sự làm gì để khắc phục lỗi? Bạn đã dán gì vào phần "đối tượng: máy chủ: client_id: ..."? Tôi nhận được một lỗi tương tự. –

Trả lời

4

Hai ID khách hàng phải là một phần của cùng một dự án.

+0

Tôi cảm thấy rất câm. Tôi nghĩ đó là tài khoản Google gắn chúng. Dù sao, cảm ơn bạn! – Barles

+0

Xin chào! Tôi đang đối mặt với những vấn đề tương tự.Bạn có thể cho tôi biết chính xác bạn đã làm gì để giải quyết vấn đề này? – Hick

+1

Không chắc chắn nếu bạn có tình huống tương tự. Tôi nhận được lỗi này vì tôi đã thêm ID ứng dụng cho chữ ký SHA1 từ kho khóa để công khai trên thị trường, nhưng khi bạn gỡ lỗi ứng dụng của mình từ nhật thực, hãy ký tên với _DEBUB KEYSTORE_ để ứng dụng của bạn có chữ ký khác. Vì vậy, bạn cần phải thêm một Client ID khác với dấu vân tay SHA từ debug.keystore Xem phần này aswer để biết chi tiết: http://stackoverflow.com/questions/15263228/cloud-endpoints-authentication-failure-in-android-app – Dimanoid

2

Tôi gặp lỗi này khi tôi đã thay đổi tên gói và quên tạo ID ứng dụng khách mới bằng gỡ lỗi SHA1 trong bảng điều khiển API của Google.

14

Sau vài giờ, tôi thấy rằng trong chuỗi phạm vi của bạn ("audience:server:client_id:..."), bạn phải sử dụng ID ứng dụng khách của ứng dụng web chứ không phải android.

ID ứng dụng khách của ứng dụng android không được sử dụng. Nó ở đây chỉ để liên kết tên gói của ứng dụng Android của bạn với ứng dụng web của bạn.

+3

Sau nhiều giờ tìm kiếm, tôi đã tìm thấy bài đăng của bạn! – Pongpat

3

Không cần phải làm nhiều hơn nữa. Vui lòng tạo lại id ứng dụng khách của bạn trên bảng điều khiển của Google và viết dòng này trong mã của bạn dưới dạng chuỗi phạm vi.

String SCOPE = "oauth2:https://www.googleapis.com/auth/userinfo.profile"; 

https://github.com/AshishPsaini/GoogleAuth

0

Thay đổi phạm vi được thêm vào trong GoogleApiCliente để Plus.SCOPE_PLUS_LOGIN. Công việc này cho tôi.

googleApiClient = new GoogleApiClient.Builder(this) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .addApi(Plus.API) 
      .addScope(Plus.SCOPE_PLUS_LOGIN) 
      .build(); 
Các vấn đề liên quan