3

Android アプリ内から oauth トークンを取得して、appengine アプリケーションに接続し、ユーザーのアカウントからメールを送信できるようにする必要があります。私が遭遇した問題は、何らかの理由で、利用可能な認証トークンのスコープに関する適切なドキュメントが実際には存在しないことです。

私が見つけたものから、認証トークンをスペース区切りで連結できますが、運がありません。 accountManager.getAuthToken(account, "oauth2:https://mail.google.com/", null, activity, new AuthTokenCallback(), null); メールトークンを取得するのに問題なく動作します。

同様 accountManager.getAuthToken(account, "ah", null, activity, new AuthTokenCallback(), null); に、アプリ エンジン トークンにも最適です。

ただし accountManager.getAuthToken(account, "oauth2:https://mail.google.com/ ah", null, activity, new AuthTokenCallback(), null); 、エラーが発生します

Couldn't sign in, There was a problem communicating with Google servers Try again later

これら 2 つをうまく連携させるにはどうすればよいでしょうか。

4

1 に答える 1

4

問題は、OAuth 2.0 スコープ (" https://mail.google.com/ ") と ClientLogin スコープ ("ah")を混在させようとしていることにあり、これはサポートされていないと思います。

多くの権限レベルを持つトークンが必要な場合は、それらをスペース区切り文字で連結します。OAuth 2 スコープの場合、次のように行われますoauth2:{space separated list of scopes}

スコープを指定するoauth2:https://mail.google.com/ ahと、両方のスコープが OAuth 2 スコープであると見なされます。しかし、「ah」は有効な OAuth 2 スコープではないため、Google サーバーはそれを受け入れず、代わりに表示されるエラーを返します。

私は App Engine の OAuth 2 スコープを認識しておらず、2011 年2012 年の Stackoverflow に関する 2 つの古い質問は、OAuth 2 をまだサポートしていないことを示唆しています。

于 2013-01-20T08:39:09.373 に答える