3

Android アプリケーション内から Glass タイムラインに投稿する Glass アクセス トークンを取得しようとしています。ユーザーは、いくつかの情報を選択して、それを自分の Glass デバイスに送信できます。

String token = GoogleAuthUtil.getToken(activity, mEmail, activity.getString(R.string.glass_token_scope));

ここで、mEmail は Google Glass ユーザーの Google アカウントのメールで、スコープは次のとおりです。

oauth2:https://www.googleapis.com/auth/glass.timeline https://www.googleapis.com/auth/glass.location https://www.googleapis.com/auth/userinfo.profile

(oauth2: ...)

Google AuthUtil を使用していますが、アクセス トークンも返されます。しかし、アクセス トークンを使用すると、API は 401 Unauthorized で応答します。

D/demo    (10804): Response Code: 401
D/demo    (10804): {
D/demo    (10804):  "error": {
D/demo    (10804):   "errors": [
D/demo    (10804):    {
D/demo    (10804):     "domain": "global",
D/demo    (10804):     "reason": "authError",
D/demo    (10804):     "message": "Invalid Credentials",
D/demo    (10804):     "locationType": "header",
D/demo    (10804):     "location": "Authorization"
D/demo    (10804):    }
D/demo    (10804):   ],
D/demo    (10804):   "code": 401,
D/demo    (10804):   "message": "Invalid Credentials"
D/demo    (10804):  }
D/demo    (10804): }

サーバー側の Oauth2 フローも正常にセットアップされ、結果のアクセス トークンを使用して、小さなローカル スクリプトからタイムライン ポストを正常に作成できます。

Android Authutil から返されたアクセス トークンは、Glass Mirror API では使用できないようです。Google API コンソールに戻って確認したところ、Android 固有のクライアント ID をいくつか作成できることがわかりました。そのため、androdi アプリケーション用のクライアント ID を作成し、android 用の単純な API アクセスもセットアップしました。SHA1 フィンガープリントには、デバッグ証明書の SHA1 を使用しました。

Android で Glass トークンの取得に成功し、そのトークンを使用して Android フォンからのリクエストに成功した人はいますか?

実際のリクエストでは、プレーンな HttpURLConnection を使用していますが、それが問題になる可能性がありますか?

        HttpURLConnection con = (HttpURLConnection)new URL(URI_TIMELINE).openConnection();
        con.setRequestMethod("POST");
        con.setDoOutput(true);
        con.setRequestProperty("Authorization", "Bearer " + token);
        con.setRequestProperty("Content-Type", "application/json");
        con.getOutputStream().write(content.toString().getBytes("UTF-8"));

どうも!

4

1 に答える 1

1

Android で有効な OAuth 2.0 トークンを取得するには、Google Play Services API、特にGoogleAuthUtilクラスを使用する必要があります。

また、 API コンソールに証明書を登録する必要があります。これらの手順について説明しているDrive SDK Quickstart for Androidを確認することをお勧めします。

于 2013-07-18T17:09:29.300 に答える