2017-08-23 56 views
5

google home'da google'daki işlemleri kullanarak akıllı bir ev uygulaması oluşturuyoruz. Uygulamamız, kullanıcı cihazlarına erişmek için sistemimize giriş yapılmasını gerektiriyor. Böylece, Google evlerinin üzerinden seslerini kullanarak bunları kontrol edebiliyorlar. Kullanıcı arka tarafımız AWS Cognito kullanılarak oluşturulmuştur. Google Home uygulamasının bir parçası olarak API.AI kullanıyoruz.Google Home Uygulaması, OAUTH'ın düzgün bir şekilde çalışmasını sağlayamıyor

Cognito OAUTH2 son noktasını ve google uygulamasındaki eylemleri, birbiriyle kod çalıştırma ve değişken kapsamları kullanarak birbiriyle çalışmak üzere yapılandırdım ancak eksik olduğum bir şey var. Kullanıcı hesabını Google Home uygulamasına bağlamaya çalıştığımda, giriş sayfamıza yönlendirilirim. Kullanıcı ayrıntılarını dolduktan sonra Google Ana Sayfa 'Discover' sekmesine döndüm, ancak altta şu durumları belirten bir mesaj var: A Kimlik Doğrulama Değişiminde IdP'den hatalı yanıt.

Ayrıca Google'ın OAUTH2 oyun alanını kullanarak denedim.

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" 
} 

kontrol ettim ve istemci kimliği rechecked ve: Ben bizim OATUH sunucudan kodu almak mümkün olduğumu kullanırken, ancak aşağıdaki hatayı alıyorum bir nişanı için kod alışverişi çalışırken görünüyor müşteri sırrı vb ve herhangi bir hata bulamıyor.

Bu sorunun nasıl giderilebileceği hakkında bir fikrim var mı?

+0

Benzer bir sorunu yaşıyorum, OAuth2 Playground aracılığıyla her şey iyi çalışıyor, AUTH belirtecini alıyorum ve bunu bir ERİŞİM jetonu için değiştirdim ve sonra da uygulamamın isteklerini gönderebilir ve her şey iyi çalışıyor. Ben akıcı yeniden yönlendirmek için bir şans ile boş sayfaya yönlendirilen simülatör ile kullanmayı deneyin. Eğer benim app üzerinde denemek doğru düzgün değil – Gazeth

+0

@Gazeth değil 'Eğer benim app denerseniz 'Google Home uygulamasına' telefon uygulamanızdaki ya da aslında telefonunuzdaki Google ana uygulamasından bahsediyor musunuz? – HumanTarget

+0

Google ana uygulamasında denemeyi kastediyorum. "CMAP ile konuş" yazıp bana kart veriyor Tıkladığım hesaplarımı bağlamak, giriş bilgilerimi doldurmak ama auth hiçbir zaman düzgün bir şekilde geçmez – Gazeth

cevap

0

Tamam önceden

sayesinde, Cognito aws kullanırsanız i istemci olsaydı bu doc ​​(http://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html)

Yetkilendirme göre ... ..... sebebini bilmek olabilir Bir sır vermişse, müşteri client_id ve client_secret'ini Basic HTTP yetkilendirme yoluyla yetkilendirme başlığında geçirmelidir. Gizli Temel Base64Encode (client_id: client_secret) 'dir. Onlar koymak müşteri ve başlığında istemci Sectet ihtiyaç

...

Sonra aws http vekil google ilerleme isteği yakalandı kullanın.

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} 

istek başlığında hiçbir Yetkilendirme vardır .. yüzden Cognito geri dönecektir

"hata": "invalid_client"

Ve bu OAuth2.0 spec göre ... https://tools.ietf.org/html/rfc6749#section-2.3.1

Aws'dan destek istemelerini rica ediyorum. Onlar dediler.

* AWS Desteğine başvurduğunuz ve bize ayrıntılı referanslar sağladığınız için teşekkür ederiz. İstek gövdesinde müşteri bilgilerini destekleyen Cognito ile ilgili sorunuza yardımcı olmaktan memnuniyet duyarım.

OAUTH2.0 Standartları RFC 6749 [0] üzerinden okuduktan sonra, istek gövdesindeki istemci kimlik bilgilerinin dahil edilmemesi tavsiye edilmez. İşte özel bir alıntı:

"İstemci kimlik bilgilerini, iki parametreyi kullanarak istek-gövdesine dahil etmek önerilmez ve doğrudan HTTP Temel kimlik doğrulama şeması (veya diğer parola tabanlı HTTP'yi kullanamayan istemcilerle sınırlandırılmalıdır. kimlik doğrulama şemaları."*