获取当前用户在Android中订阅的Youtube频道列表?

时间:2016-09-07 15:06:48

标签: unity3d youtube-api android-youtube-api

您好我想获取当前用户在android中订阅的频道列表。

我遵循的步骤:

1)https://developers.google.com/youtube/v3/docs/subscriptions/list

通过阅读说明,我在Android开发者控制台中为Android和 oauth 键创建了 API密钥,并且厌倦了实施以下请求

GET https://www.googleapis.com/youtube/v3/subscriptions?part=snippet&mine=true&key={YOUR_API_KEY}。你可以看到我只设置了part = snippetmine = true

对于身份验证,我遵循了https://developer.android.com/training/id-auth/authenticate.html

这是我的代码

AccountManager am = AccountManager.get(this);
Bundle options = new Bundle();

am.getAuthToken(
    myAccount_,                     // Account retrieved using getAccountsByType()
    "Manage your tasks",            // Auth scope
    options,                        // Authenticator-specific options
    this,                           // Your activity
    new OnTokenAcquired(),          // Callback called when a token is successfully acquired
    new Handler(new OnError()));    // Callback called if an error occurs

添加适当的权限后,我可以在myAccount _

中获取我的帐户

致电 TokenAcquire

的backbaack
private class OnTokenAcquired implements AccountManagerCallback<Bundle> {
    @Override
    public void run(AccountManagerFuture<Bundle> result) {
        // Get the result of the operation from the AccountManagerFuture.
        Bundle bundle = result.getResult();

        // The token is a named value in the bundle. The name of the value
        // is stored in the constant AccountManager.KEY_AUTHTOKEN.
        token = bundle.getString(AccountManager.KEY_AUTHTOKEN);
        ...
    }
}

我没有获得令牌值

请指导我。 是否有其他替代方法或者是否必须更新/修改某些内容?

我在xml中的权限是

<uses-permission android:name="android.permission.ACCOUNT_MANAGER" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />

我在异常处理中捕获此行token = bundle.getString(AccountManager.KEY_AUTHTOKEN);时出错。

  

android.accounts.AuthenticatorException。   尝试在空对象引用上调用虚方法'java.lang.String android.os.Bundle.getString(java.lang.String)'

我使用的是Android 6.0,它需要运行时权限。

1 个答案:

答案 0 :(得分:1)

要根据Obtain an access token成功获取访问令牌,我认为您需要为Youtube API使用'https://gdata.youtube.com'的有效范围。但是,看看你的代码,似乎你通过了#34;管理你的任务&#34;作为Auth范围。请尝试将其设置为'https://gdata.youtube.com'

关于获取订阅者数量,请尝试使用以下URI GET请求创建REST call in Android

GET https://www.googleapis.com/youtube/v3/subscriptions?part=snippet&mySubscribers=true&fields=pageInfo&key={SERVER_API_KEY}

它返回一个JSON响应,其中totalResults表示订阅者数量:

{
   "pageInfo": {
   "totalResults": 2,
   "resultsPerPage": 5
  }
}