2012-05-01 15 views
14

Her ikisi de Google Hesaplarını kullanarak Android istemcim AppEngine sunucum var. OAuth için accessToken almak için AccountManager'ı kullanmak istiyorum. Şimdiye kadar ClientLogin kullanıyorum, ancak OAuth'a geçmek istiyorum.Android'in AccountManager'ını AppEngine için OAuth erişim belirteci almak için kullanabilir miyim?

AppEngine üzerinde OAuth kurulumu kolaydır - this article'u takip ettim. Ancak müşteri tarafı bir gizem, özellikle de kapsam için ne kullanacağımı bilmiyorum, AccountManager authTokenType. ClientLogin için authTokenType için "ah" kullanıyorum. Peki ya OAuth?

+1

sen baktın mı? Otomatik olarak sizin için gerekli kodu oluşturur. –

+0

Gerçekten kullanmamıştım, ama IIRC, kapsam tüm uygulamanız. Yani 'http://myapp.appspot.com' –

+0

gibi bir şey "App Engine bağlı android projeye" baktım ve OAuth değil ClientLogin kullanır. Kapsam olarak tam etki alanı çalışabilir, bunu deneyeceğim. –

cevap

10

Günümüzde, Android'de Oauth 2.0 kimlik doğrulaması yapmak için Android'de Google Play Hizmetleri API'sını kullanabilirsiniz. Daha sonra, appengine üzerinde userinfo'yu almak için @nivco tarafından açıklanan yöntemi kullanabilirsiniz. Bunu henüz yapmadım, ama tam olarak ne hakkında konuştuğunu planlıyorum. Eclipse eklentisi seçeneği "App Engine android projesi bağlı" nde

https://developers.google.com/android/google-play-services/authentication

6

Yapmaya çalıştığınız şeyin, başvuruda bulunduğunuz makalede kullanılan App Engine OAuthService aracılığıyla mümkün olduğundan emin değilim. Ayrıca, AppEngine OAuthService'in sadece OAuth 1'i desteklediği ancak Android'in sadece OAuth 2'yi desteklediği belirtildi. Çapraz Android'i yapmak istiyorsanız

- App Engine kimlik, ne yapacağını geçerli:

Android'de
  1. : Hesap Yöneticisi'nin dan Userınfo API (kapsam = https://www.googleapis.com/auth/userinfo.email ve https://www.googleapis.com/auth/userinfo.profile) için bir erişim jetonu almak.
  2. Erişim belirtecini Android'den AppEngine'e yaptığınız isteğin bir URL parametresinde App Engine'e geçin (engellemeyi önlemek için HTTPS kullandığınızdan emin olun!).
  3. App Engine tarafında: kullanıcı kimliğini UserInfo API kullanarak okumak için erişim belirtecini kullanın. Bu temelde OpenID Connect kullanıyor!
  4. Daha sonra, kullanıcının kimliğini doğrulamak için UserInfo API'sinden aldığınız bilgileri kullanabilirsiniz. UserInfo API'sinden alacağınız e-posta ve kullanıcı kimliği, AppEngine's UserService'den alacağınız e-posta ve kullanıcı kimliğine eşdeğerdir => buna güvenebilirsiniz!

PS: Ben this article Android AccountManager kullanarak OAuth 2 belirteçleri başlamıştı tanımladı. Önceden Ice Cream Sandwich yazılmıştır ancak atlamalıyım hala geçerli. Temel olarak authTokenType'un oauth2:{scopes} olması gerekir, örneğin Görevler API'sı için oauth2:https://www.googleapis.com/auth/tasks. Bunu şimdi yapmanın daha iyi yolları olabilir.

+1

Bana doğru yönde işaret ettiğiniz için teşekkürler. Ancak API aracılığıyla AppEngine'ı yönetmem gerekmiyor, bu yüzden bu kapsamın işe yaramayacağını düşünüyorum. Sadece normal kullanıcı olarak Google Hesabı ile AppEngine giriş yapmak istiyorum. –

+0

Sorun, "AccountManager" adresinden aldığınız erişim belirtecinin yalnızca Android uygulamanız için geçerli olacağıdır. Bu nedenle, web sitenizde aynı belirteci kullanmaya çalışırsa reddedilir. Bu konuda henüz bir şey bulamadım ve başka kimsenin bu soruna sahip olduğuna inanamıyorum ... – Timmmm

+0

Bunu App Engine'in yetkisini kullanan bir API ile mümkün olduğunu sanmıyorum ... Ayrıca AppEngine servisinin sadece OAuth 1'i desteklediği ancak Android'in yalnızca OAuth 2'yi desteklediği belirtildi :) böylece vidalandınız. – Nivco

İlgili konular