2013-08-21 44 views
12

Tôi cố gắng sử dụng Google oauth để xác thực người dùng trên ứng dụng Android của tôi. Sau đó, tôi muốn gửi nó đến máy chủ ứng dụng của tôi để nó có thể kết nối bất cứ lúc nào với lịch Google.nhận mã thông báo ủy quyền oauth của Google từ Android trở về với invalid_scope/Lỗi không xác định

Tôi cố gắng để sử dụng GoogleAuthUtil.getToken(getApplicationContext(), mAccountName, mScope);

Tiếp theo bài viết này: https://developers.google.com/accounts/docs/CrossClientAuth

Khi tôi sử dụng nó với phạm vi mScope = "oauth2:https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"; tôi nhận được một mã thông báo, trong đó có giá trị trong một giờ

Nhưng khi Tôi cố gắng lấy mã ủy quyền (để tôi có thể nhận mã thông báo làm mới hợp lệ trong thời gian dài hơn, sử dụng mScope2 ="oauth2:server:client_id:{CLIENT_ID}.apps.googleusercontent.com"+ ":api_scope:https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile";

Tôi nhận được ngoại lệ "invalid_scope" hoặc "Không xác định".

Tôi đang làm gì sai?

EDIT: OK, sau khi tạo ứng dụng mới trên bảng điều khiển API của Google và thêm plus.login vào phạm vi tôi nhận được mã, nhưng vì lý do nào đó máy chủ của tôi không thể giải quyết mã thông báo này. Khi buộc phải giải quyết máy chủ sẽ gặp lỗi về URL chuyển hướng. BTW, Khi tôi thực hiện luồng web với các thông số tương tự, nó hoạt động.

Trả lời

11

OK, đã tìm thấy giải pháp, tôi mong đợi Google có tài liệu hướng dẫn tốt hơn về cách làm việc với Google Oauth và Android. Một số điều bạn cần phải biết để làm việc với Android và ẩn dấu hiệu

  1. Khi bạn tạo google Client ID Đừng tạo ra một ứng dụng dịch vụ trước khi bạn tạo một ứng dụng web

  2. Phải bao gồm https://www.googleapis.com/auth/plus.login tại của bạn Phạm vi

  3. Cách kỳ lạ nhất, để giải quyết mã ủy quyền một lần trên máy chủ của mình, tôi phải sử dụng URL chuyển hướng từ chi tiết ID khách hàng Android (thậm chí không giống url) mà không phải từ ứng dụng Web chi tiết trên bảng điều khiển API của Google.

+0

Tôi không thực hiện điều đó. Tôi có thể xem cách thực hiện của nó – prashantwosti

+2

Bạn có mã của bạn được đăng bất cứ nơi nào bởi bất kỳ cơ hội (Github vv)? Tôi nhận được ngoại lệ không xác định và điều đó khiến tôi hoàn toàn mất trí Tôi không biết phải cố gắng gì nữa ... –

+1

Cảm ơn bạn rất nhiều. Bước thứ ba thực sự là quan trọng. Tôi đã bị mắc kẹt cả ngày nghĩ rằng những gì đã sai với yêu cầu của tôi và Google thực sự nên làm việc nhiều hơn để cung cấp tài liệu tốt. –

0

Chuỗi phạm vi đó chỉ được ghi lại để hoạt động khi được chuyển đến GoogleAuthUtil(), xem http://developer.android.com/reference/com/google/android/gms/auth/GoogleAuthUtil.html, trên Android. Nhưng nó sẽ được mát mẻ nếu nó làm việc trên iOS quá; cơ sở hạ tầng của chúng tôi có một chút ở phía sau nơi chúng tôi đang ở trên Android.

+0

Tôi đang sử dụng Android – Gil