2017-08-23 24 views
5

Chúng tôi đang xây dựng ứng dụng thông minh trên nhà bằng cách sử dụng các hành động trên google cho nhà google. Ứng dụng của chúng tôi yêu cầu đăng nhập vào hệ thống của chúng tôi để có thể truy cập vào thiết bị của người dùng để họ có thể kiểm soát chúng bằng giọng nói của họ trên trang chủ google. Phần phụ trợ người dùng của chúng tôi được tạo bằng AWS Cognito. Chúng tôi đang sử dụng API.AI như một phần của ứng dụng Google Home.Ứng dụng Google Home, không thể nhận OAUTH hoạt động đúng cách

Tôi đã định cấu hình điểm cuối Cognito OAUTH2 và các hành động trên ứng dụng google để làm việc với nhau bằng cách sử dụng luồng mã auth và phạm vi khác nhau nhưng có điều gì đó tôi bị thiếu. Khi tôi cố gắng liên kết tài khoản người dùng với ứng dụng Google Home, tôi được chuyển hướng đến trang đăng nhập của chúng tôi. Sau khi điền thông tin chi tiết về người dùng, tôi quay trở lại tab 'Khám phá' của Google Home nhưng có một thông báo ở phía dưới có ghi: 'Phản hồi không hợp lệ từ IdP trong Trao đổi mã xác thực'.

Tôi cũng đã thử sử dụng sân chơi OAUTH2 của Google. Dường như khi sử dụng mà tôi có thể lấy mã từ máy chủ OATUH của chúng tôi, nhưng khi cố gắng trao đổi mã cho một mã thông báo tôi nhận được lỗi sau:

HTTP/1.1 400 Bad Request 
Strict-transport-security: max-age=31536000 ; includeSubDomains 
X-content-type-options: nosniff 
X-application-context: application:prod:8443 
Transfer-encoding: chunked 
Set-cookie: XSRF-TOKEN=35f58337-76f4-4993-a0c9-93429134ea42; Path=/; Secure; HttpOnly 
Expires: 0 
Server: Server 
Connection: keep-alive 
X-amz-request-id: 284d862e-b021-4079-b5f5-3cbce675983c 
X-xss-protection: 1; mode=block 
Pragma: no-cache 
Cache-control: no-cache, no-store, max-age=0, must-revalidate 
Date: Wed, 23 Aug 2017 13:51:42 GMT 
X-frame-options: DENY 
Content-type: application/json;charset=UTF-8 
{ 
    "error": "invalid_client" 
} 

Tôi đã kiểm tra và kiểm tra lại ID của khách hàng và khách hàng bí mật vv và không thể tìm thấy bất kỳ lỗi nào.

Có ai có ý tưởng nào về cách khắc phục sự cố này không?

Cảm ơn trước

+0

Tôi gặp vấn đề tương tự, thông qua OAuth2 Playground mọi thứ hoạt động tốt, tôi nhận được mã thông báo AUTH và sau đó trao đổi mã này cho mã thông báo ACCESS và sau đó tôi có thể gửi yêu cầu tới ứng dụng của tôi và tất cả đều hoạt động tốt. Tôi cố gắng sử dụng nó thông qua các giả lập tôi nhận được chuyển hướng đến trang trống với một cơ hội để chạy lại dòng chảy.Nếu tôi thử trên ứng dụng của tôi nó chỉ không xác thực đúng – Gazeth

+0

@Gazeth Khi bạn nói 'Nếu tôi thử trên ứng dụng của tôi 'bạn đang đề cập đến ứng dụng Google Home' của bạn 'bên trong ứng dụng Google Home trên điện thoại của bạn hay thực sự trong ứng dụng điện thoại của bạn? – HumanTarget

+0

Ý tôi là tôi đang cố gắng sử dụng ứng dụng Google Home. Tôi nhập "Talk to CMAP" và nó mang lại cho tôi thẻ để liên kết các tài khoản mà tôi nhấp vào, điền vào chi tiết đăng nhập của tôi nhưng auth không bao giờ đi qua đúng – Gazeth

Trả lời

0

ok, có thể là tôi biết lý do ..... Nếu bạn sử dụng AWS cognito ... Theo doc này (http://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html)

Authorization Nếu khách hàng là ban hành một bí mật, khách hàng phải vượt qua client_id và client_secret của nó trong tiêu đề ủy quyền thông qua ủy quyền HTTP cơ bản. Bí mật là Basic Base64Encode (client_id: client_secret).

họ cần đặt kiến ​​thức khách hàng và khách hàng vào tiêu đề ...

Sau đó, tôi sử dụng proxy http aws bắt yêu cầu của tiến trình google.

Method request headers: {X-Cloud-Trace-Context=d7b6b9b8239965baf69acab659e80a01/13879251242019662389, CloudFront-Viewer-Country=US, CloudFront-Forwarded-Proto=https, CloudFront-Is-Tablet-Viewer=false, CloudFront-Is-Mobile-Viewer=false, User-Agent=google-oauth-playground AppEngine-Google; (+http://code.google.com/appengine; appid: s~oauth2playground), X-Forwarded-Proto=https, CloudFront-Is-SmartTV-Viewer=false, Host=en75z5h2rb.execute-api.us-east-1.amazonaws.com, Accept-Encoding=gzip, deflate, X-Forwarded-Port=443, X-Amzn-Trace-Id=Root=1-5a0fcef2-09197cd86a625ad47d78f0b7, Via=1.1 d63a8908759a2f4775b3f672ebf823cc.cloudfront.net (CloudFront), X-Amz-Cf-Id=nFdLK97vAS5HvmpNYkPpbUMOB4bCaM6pScHWTAReAnonLg1gXF7hSg==, X-Forwarded-For=107.178.195.199, 54.182.238.53, content-type=application/x-www-form-urlencoded, CloudFront-Is-Desktop-Viewer=true} 

không có ủy quyền trong yêu cầu tiêu đề .. nên Cognito sẽ trở về

"lỗi": "invalid_client"

Và theo OAuth2.0 này spec ... https://tools.ietf.org/html/rfc6749#section-2.3.1

Tôi đã yêu cầu hỗ trợ aws. Họ nói.

* Cảm ơn bạn đã liên hệ với bộ phận Hỗ trợ AWS và cung cấp cho chúng tôi tài liệu tham khảo chi tiết. Tôi rất sẵn lòng hỗ trợ câu hỏi của bạn về Cognito hỗ trợ thông tin đăng nhập ứng dụng khách trong phần thân yêu cầu.

Sau khi đọc qua tiêu chuẩn OAUTH2.0 RFC 6749 [0], Dường như bao gồm thông tin đăng nhập ứng dụng khách trong phần thân yêu cầu không được khuyến nghị. Dưới đây là một đoạn trích về thông số:

"Bao gồm thông tin đăng nhập của khách hàng trong cơ thể yêu cầu bằng hai tham số không được khuyến nghị và nên giới hạn cho khách hàng không thể trực tiếp sử dụng lược đồ xác thực HTTP cơ bản (hoặc HTTP dựa trên mật khẩu khác lược đồ xác thực)."*

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