1

アカウントマネージャーでYouTubeアカウントにアクセスしようとしています。つまり、デバイスにリンクされたアカウントでYouTubeにアクセスし、これを使用してYouTubeトークンを取得して、ユーザーのプレイリストなどにアクセスしたいと考えています。Android用のFreediアプリケーションは、このようなことをしています。

このコードを使用してトークンを取得しました

    am.getAuthToken(accounts[0], "youtube", true, new AccountManagerCallback<Bundle>() {

        @Override
        public void run(AccountManagerFuture<Bundle> future) {
            try {
                Bundle bundle = future.getResult();
                if (bundle.containsKey(AccountManager.KEY_INTENT)) {
                    Intent intent = bundle.getParcelable(AccountManager.KEY_INTENT);
                    intent.setFlags(intent.getFlags() & ~Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivityForResult(intent, 0);
                } else if (bundle.containsKey(AccountManager.KEY_AUTHTOKEN)) {
                    my_access_token = bundle.getString(AccountManager.KEY_AUTHTOKEN);
                    onActivityResult(0,1,null);
                }
            } catch (Exception e) {
                Log.e("TEST", e.getMessage(), e);
            }
        }
    }, null);

しかし、youtubeが認識しないトークンで満たされたvar my_access_token...どうすればそこからyoutubeトークンを取得できますか? ユーザープレイリストを取得する方法は?

4

3 に答える 3

7

私が開発中のアプリでこの問題の解決を終えたばかりなので、幸運です。

AccountManager.get(getApplicationContext()).getAuthTokenByFeatures("com.google", "oauth2:https://gdata.youtube.com", null, this,
    null, null, new AccountManagerCallback<Bundle>() {

        @Override
        public void run(AccountManagerFuture<Bundle> future) {
        try {
            Bundle bundle = future.getResult();
            String acc_name = bundle.getString(AccountManager.KEY_ACCOUNT_NAME);
            String auth_token = bundle.getString(AccountManager.KEY_AUTHTOKEN);

            Log.d(DEBUG_TAG, "name: " + acc_name + "; token: " + auth_token);

        } catch (Exception e) {
            Log.e(DEBUG_TAG, e.getClass().getSimpleName() + ": " + e.getMessage());
        }
        }
    }, null);
于 2012-10-11T14:07:20.890 に答える
1

私自身はまだアプリで使用したことがなく、すべての Android デバイスで利用できるわけではないかもしれませんが、Google Play サービスが OAuth 2 トークン ( https:/ /gdata.youtube.com )。詳細については、

http://android-developers.blogspot.com/2012/09/google-play-services-and-oauth-identity.html

ただし、幅広い互換性のために AccountManager アプローチを使用することもできます。

于 2012-10-13T03:27:38.110 に答える