2017-04-26 23 views
6

Tôi đang cố truy cập API Google Drive và đọc documentation. Ứng dụng iOS của tôi gửi yêu cầu đầu tiên yêu cầu cấp quyền đến điểm cuối https://accounts.google.com/o/oauth2/v2/auth.Nền tảng nhận dạng của Google: Không thể trao đổi mã ủy quyền cho mã thông báo làm mới và truy cập

Quyền tài trợ của người dùng. Tôi nhận được một mã. Bước tiếp theo là mã ủy quyền cho mã thông báo làm mới và truy cập.

Đối với các ứng dụng đã cài đặt, tôi không cần gửi mật khẩu cho khách hàng. Để làm được điều đó ứng dụng iOS sẽ gửi yêu cầu POST đến thiết bị đầu cuối:

https://www.googleapis.com/oauth2/v4/token 

với tiêu đề:

Content-Type : application/x-www-form-urlencoded 

cơ thể:

code={CODE_FROM_OAUTH_SERVER}&client_id={CLIENT_ID_FROM_CONSOLE}&redirect_uri={APP_BUNDLE_IDENTIFIER}:/code&grant_type=authorization_code 

tôi nhận được câu trả lời:

{ 
    "error": "unsupported_grant_type", 
    "error_description": "Invalid grant_type: " 
} 

A Trang được đăng ký trong bảng điều khiển của Google.

Câu hỏi của tôi là tôi đang làm điều gì đó sai?

+0

Bạn đã tạo loại thông tin xác thực nào trên bảng điều khiển dành cho nhà phát triển? – DaImTo

+0

@DaImTo, thông tin đăng nhập cho ứng dụng đã cài đặt, trong trường hợp của tôi - Tạo ID ứng dụng -> iOS –

+0

và bạn đã theo dõi https://openid.github.io/AppAuth-iOS/? – DaImTo

Trả lời

3

Đang gửi dữ liệu được chỉ định trong yêu cầu POST tới máy chủ HTTP, giống như khi trình duyệt thực hiện khi chúng tôi điền vào biểu mẫu HTML và gửi. Điều này sẽ gây ra để truyền dữ liệu đến máy chủ bằng cách sử dụng loại nội dung application/x-www-form-urlencoded.

Bạn nên thử bằng cách thay đổi cách bạn vượt qua các thông số OAuth như client_id,, redirect_uri, grant_type vv

Hoặc nên cố gắng làm Native Client kiểu mặc định.

+1

I đã thử những cách khác nhau và nó không hoạt động, có thể bạn có đề xuất cụ thể? Cảm ơn trước. –

0

Một nguồn lỗi phân tích cú pháp có thể là redirect_uri. Nó phải được mã hóa url.

+1

Có, tôi đã thêm mã hóa URL, nó không giúp –

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