使用帐户管理器访问YouTube帐户



我试图使用客户经理访问YouTube帐户,这意味着我想使用链接到我的设备的帐户访问youtube,并使用此获取YouTube令牌来访问用户播放列表等等。安卓的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);

但是 VaR my_access_token充满了 YouTube 无法识别的令牌......如何从中获取YouTube令牌?以及如何获取用户播放列表?

你很

幸运,因为我刚刚在我正在开发的应用程序上解决了这个问题。

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);

我自己还没有在应用程序中使用它,它可能不是在所有Android设备上都可用,但我的理解是,Google Play服务现在提供了获取OAuth 2令牌(包括范围为 https://gdata.youtube.com 的令牌)的最佳方法。更多信息请访问

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

不过,您可以使用帐户管理器方法以获得更广泛的兼容性。

令人困惑的部分是 authTokenType 参数,它必须与 OAuth2 访问的规范一起完成,例如

"OAuth2:https://gdata.youtube.com"

"OAuth2:https://www.googleapis.com/auth/tasks"

相关内容

  • 没有找到相关文章

最新更新