2016-01-10 24 views
5

Google'ın OAuth2 API'lerinde RFC7636 (OAuth belirteci değiş tokuşları için kanıt anahtarı) durumuyla ilgili somut bilgiler arıyorum.Google OAuth 2.0 API'ları ne ölçüde RFC7636'yı destekliyor?

Google, erişim belirteçlerinin edinilebileceği bir OAuth 2.0 ve OIDC sağlayıcı API'sı ortaya çıkarır. RFC7636'da, büyük kimlik sağlayıcılarıyla entegrasyonlarımızda kullanmaya başladığımız jeton değişimlerinde ispatlama anahtarlarını kullanmak için önerilen bir standart vardır. Bazıları kanıt anahtarını kabul eder, diğerleri bunu görmezden gelir; Google bunun farkında gibi görünüyor, ancak kanıt anahtarını doğrulayamıyor. Bu wrt Google’dan herhangi bir şey bulamadım.

Somut olarak, OAuth 2.0'ın yetki kodu akışını sağlayıcı olarak kullanarak Google'ı rastgele bir sayı oluşturuyoruz, SHA256'yı kullanarak kullanmıyor, base64 URL'sini kodlayın ve daha sonra "code_challenge" parametresi olarak https://accounts.google.com/o/oauth2/v2/auth parametresine iletin ve Spesifikasyonlara göre "code_challenge_method". Son nokta, parametreleri kabul eder ve her zamanki gibi bir yetkilendirme belirtecini verir. Erişim belirtecini alırken, code_verifier ile https://www.googleapis.com/oauth2/v4/token diyoruz; son nokta, aşağıdaki kodun doğruluğunu gösteren bir HTTP 400 hatası döndürür: { "error": "invalid_grant", "error_description": "Eksik kod doğrulayıcısı." }

Google'ın OAuth dokümanları, developers.google.com/identity/protocols/OAuth2 adresindeki bu parametrelerden hiç söz etmemektedir; API oyun alanı OAuth2 auth ve token uç noktaları ile oynamaya uzanmaz. Herhangi bir anlayış büyük ölçüde takdir edilecektir.

+0

Bunu işe aldınız mı? Aynı sorunu yaşıyorum: {"error": "invalid_grant", "error_description": "Eksik kod doğrulayıcısı." }, iOS SDK AppAuth'ı kullanarak yayınınızda belirttiğiniz aynı son noktalara ulaşmanız. – quantum

cevap

0

AppAuth ve bir Android clientId kullanarak aynı sorunu yaşıyordum. Bunu düzeltmek için, hem yetkilendirme hem de belirteç isteklerinde eşleme 'code_verifier' alanı ayarlamam gerekiyordu. Bu gönderide daha ayrıntılı bir açıklama bulabilirsiniz: invalid_grant trying to get oAuth token from google