2011-12-01 14 views
7

私は、CLIクライアント、Androidクライアント、およびJavascriptクライアントとともにGoogle App Engineアプリケーションを作成しています。このアプリケーションの目的は、CLIクライアントまたはJavascriptクライアントのいずれかを使用して、AndroidクライアントがインストールされているAndroidフォンを制御できるようにすることです。Google App Engineでは、GoogleのOAuth 2トークンと、AndroidのAccountManagerを使用して取得したSACSIDトークンを関連付けることはできますか?

認証は、悪意のあるユーザーが他人の携帯電話を制御することを可能にするかもしれないバグとして重要な役割を果たしています。

Androidのクライアントが書かれており、機能しています。 this methodを使用してユーザーを認証します。基本的に、これは私にクッキーに保存できるいわゆるSACSIDトークンを与えます。このCookieが設定されると、App Engineはユーザーを認識します。サーバーアプリケーションは、UserServiceを呼び出して、getUserId()を呼び出すUserを取得できます。 getUserId()は私のユーザーを識別する不透明な文字列を返します。ここまでは順調ですね。

今、私はJSとCLIクライアントを書いています。 CLIクライアントは、CAPTCHAを表示したり、ブラウザを開くことのない信頼性の高い方法を持っていないので、私はそれがDevice API(「クライアントログインが」オプションではありません)を使用する必要があるとします。このAPIでは、認証にOAuth 2を使用する必要があります。また、JSクライアントがユーザーの連絡先にアクセスするようにしたいと考えています。これはまた、OAuth 2が適切であることを示しているようです。

私のユーザーはOAuthの2を使用して認証する場合は、私が何とかAndroidのクライアントが接続したときに私が得る同じ不透明な文字列にこのGoogleのOAuth 2トークンを変換するhableでしょうか?そうでない場合は、Sacsidトークンの代わりにOAuthを使用するようにAndroidアプリケーションを修正できますか?アカウントマネージャ

  • からのOAuth 2トークンを交換する方法をOAuthの2トークンを取得する方法

    1. 具体的には、私は私の問題を解決する3つのことを見ますSACSIDトークン

    2. SACSIDトークンでとのOAuth2の両方に同じ不透明なユーザーIDを取得する方法が、私は、同じアプリケーションで両方の認証システムを持つことができる場合にのみ。

    3つ目の解決策と似ていると思われることは、OAuthとSACSIDトークンの両方からユーザーの電子メールアドレスを取得し、それをユーザーIDとして使用することです。しかし、これは私には不器用なビットを探します:

    • 私はOAuthの2の要求を受け取るたびに、私は、ユーザーの電子メールアドレスを取得するには、GoogleのAPIを呼び出す必要があります(または安全ではないと思われるトークンと紹介の私の独自のシステムを構築します他の多くの困難)。
    • 特定のユーザーの電子メールアドレスが変更され、ユーザーと以前のデータとの関連付けが失われる可能性があります。
  • 答えて

    関連する問題