Android上的YouTube数据API v3-如何区分有限的帐户

Android上的YouTube数据API v3-如何区分有限的帐户,android,youtube-api,google-authentication,Android,Youtube Api,Google Authentication,我正在开发一个简单的包装器库,它将允许快速实现将视频上传到YouTube,我遇到了一个问题:用户可以选择几种“类型”的帐户-具有完整Google功能的普通帐户、服务帐户(,搜索单词“youtubeSignupRequired”)以及一些限制访问谷歌服务的商业账户。当然,这是我自己的分类,不依赖官方文件。 所以,在某个时刻,我请求用户选择一个帐户 private void selectAccountToLogin(Activity activity){ Intent intent = Ac

我正在开发一个简单的包装器库,它将允许快速实现将视频上传到YouTube,我遇到了一个问题:用户可以选择几种“类型”的帐户-具有完整Google功能的普通帐户、服务帐户(,搜索单词“youtubeSignupRequired”)以及一些限制访问谷歌服务的商业账户。当然,这是我自己的分类,不依赖官方文件。
所以,在某个时刻,我请求用户选择一个帐户

private void selectAccountToLogin(Activity activity){
    Intent intent = AccountPicker.newChooseAccountIntent(null, null, new String[]{GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE}, true, "", null, null, null);
    activity.startActivityForResult(intent, SELECT_ACCOUNT_REQUEST);
}
这些行只是创建了一个对话框来选择帐户,现在一切正常。接下来,我想为所选帐户获取令牌:

String token = GoogleAuthUtil.getToken(activity, account, OAUTH_SCOPE);
重要信息-我收到了所有“类型”账户的代币(我认为这通常是由于谷歌服务中的通用身份验证程序)。接下来,我想将我的视频上传到YouTube,下面是魔术:

1) 对于我的个人gmail帐户,一切正常-视频上传成功。
2) 对于商业帐户(无法访问YouTube),我收到了401

com.google.api.client.googleapis.json.GoogleJsonResponseException: 401 Unauthorized
 {
   "code" : 401,
   "errors" : [ {
     "domain" : "global",
     "location" : "Authorization",
     "locationType" : "header",
     "message" : "Invalid Credentials",
     "reason" : "authError"
    } ],
    "message" : "Invalid Credentials"
}
com.google.api.client.googleapis.json.GoogleJsonResponseException: 401 Unauthorized
 {
   "code" : 401,
   "errors" : [ {
     "domain" : "youtube.header",
     "location" : "Authorization",
     "locationType" : "header",
     "message" : "Unauthorized",
     "reason" : "youtubeSignupRequired"
   } ],
   "message" : "Unauthorized"
 }
为什么我拿的是401而不是403或者别的?(这更像是一个反问句)但在这一点上一切都不是那么糟糕:
3) 对于服务帐户,我也收到了401

com.google.api.client.googleapis.json.GoogleJsonResponseException: 401 Unauthorized
 {
   "code" : 401,
   "errors" : [ {
     "domain" : "global",
     "location" : "Authorization",
     "locationType" : "header",
     "message" : "Invalid Credentials",
     "reason" : "authError"
    } ],
    "message" : "Invalid Credentials"
}
com.google.api.client.googleapis.json.GoogleJsonResponseException: 401 Unauthorized
 {
   "code" : 401,
   "errors" : [ {
     "domain" : "youtube.header",
     "location" : "Authorization",
     "locationType" : "header",
     "message" : "Unauthorized",
     "reason" : "youtubeSignupRequired"
   } ],
   "message" : "Unauthorized"
 }
因为两个不同的原因,我得到了相同的401。当然,我可以通过json响应中的域和头参数来区分这些情况,但对我来说,这是一种丑陋且不准确的方法。

也许有人已经面对了这个问题,并以更准确的方式解决了它?我所需要的是——获取有关情况的准确信息,并将其呈现给用户。

您找到了解决方案吗?如果是,请与我分享一些链接+1回答您的问题。@VVB不幸的是,没有。因为这不是我们应用程序的主要功能,所以我们忽略了这个问题。