通过OAuth2授权Android版YouTube数据API

bat*_*ist 5 android youtube-data-api

我正在尝试使用OAuth2授权使用YouTube数据API.我想为Android编写一个简单的客户端,例如,获取用户订阅列表,播放列表等.问题是我尝试的每种方法(例如HTTP请求https://www.googleapis.com/youtube/v3/subscriptions或YouTube库com.google.apis:google-api-services-youtube:v3-rev120-1.19.0),我得到相同的错误:

401凭证无效

我这样做了:

  1. 在Google控制台中注册应用.启用YouTube Data API.使用我的应用包名称和密钥库创建OAuth凭据.
  2. 创建Android API密钥.

在这里,我有很多问题.

  1. 为了有可能获得用户订阅等,我是否必须使用OAuth2凭证和(?)注册API密钥注册应用程序?
  2. 如何使用client_id和client_secrets.json中的其他数据?我怎么能使用这个client_secrets.json呢?我需要下载它,以及如何使用它?

因为当我看到示例代码时,例如:

GoogleAccountCredential credential = GoogleAccountCredential.usingOAuth2(context.getApplicationContext(), Arrays.asList(SCOPES));
            credential.setSelectedAccountName(accountName);

            YouTube youtube = new YouTube.Builder(new NetHttpTransport(),
                    new JacksonFactory(), credential).setApplicationName(context.getString(R.string.app_name)).build();
Run Code Online (Sandbox Code Playgroud)

或者使用AccountManager并获取令牌

 accountManager.getAuthToken(userAccount, "oauth2:" + mScope, null, (Activity) mContext,
            new OnTokenAcquired(), null);
where mScope="https://gdata.youtube.com"
Run Code Online (Sandbox Code Playgroud)

然后以这种方式使用它

https://www.googleapis.com/youtube/v3/subscriptions?part=snippet&maxResults=10&mine=true&key={here is my key}&access_token= ya29.bgJa5J8LHHu0Mu3P87mbPY9gfhSFzWUHh8gCw022FC6yfMO6GfVHveYr_BG1-HnWF-jpd-IDcGGVrF3gEf4UhSHPSrV76RAwqd4V17ixn72s1Xl6a0wQ4FVDz3cEZjUEN80o
Run Code Online (Sandbox Code Playgroud)

我每次都得到相同的authError错误(简而言之):

"code":401,
"message":"凭证无效"

我做错了什么?如何在变体1和2中使用client_id.是否有必要?因为我认为这就是为什么它不起作用的原因.