如何查看 Google 帐户持有人是否有 Youtube 频道(已链接)?
How to see if Google account holder has a Youtube channel (is linked)?
根据 Google 文档,任何 Google 帐户持有人也是 Youtube 帐户持有人,但他可能不是 "linked",即拥有 Youtube 频道。应用只能将视频上传到关联的帐户。
如果您使用 AccountManager 获取 Google 帐户持有人的列表,那么您无法判断其中任何一个是否已链接。我需要一种方法来确定它是否已链接。
似乎没有直接专门调用 Youtube api 来查看帐户是否有频道(已链接)。
也许可以重新调整以下代码片段的用途:
List<String> scopes = new ArrayList<>();
scopes.add( SendToGoogleUtils."https://www.googleapis.com/auth/youtube.upload" );
if( ( googleAccountCredential = SendToGoogleUtils.getGoogleAccountCredential(
mContext, accountYoutube.name, scopes ) ) == null) return;
String gAToken = googleAccountCredential.getToken();
youtube = new YouTube.Builder(HTTP_TRANSPORT, JSON_FACTORY, googleAccountCredential)
.setApplicationName(getString(R.string.tourmaker_app_name))
.build();
YouTube.Channels.List channelRequest = youtube.channels().list("contentDetails");
channelRequest.setMine(true);
channelRequest.setFields("items/contentDetails,nextPageToken,pageInfo");
ChannelListResponse channelResult = channelRequest.execute();
如果链接了 accountYoutube(参见代码第 4 行),则此代码运行正常,并继续执行后面的上传代码。
如果未链接 accountYoutube,执行语句将抛出 GoogleJsonResponseException:
com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 禁止访问
{
"code" : 403,
"errors":[{
"domain" : "global",
"message" : "Insufficient Permission",
"reason" : "insufficientPermissions"
} ],
"message" : "Insufficient Permission"
}
因此,这段代码可以告诉您 Youtube 帐户是否已关联。这种代码是否是确定 accountYoutube 是否有频道(已链接)的合理方法?
我很怀疑,因为这个异常似乎是我可能无法依赖的副作用。
我正在寻找一种最佳做法来确定是否链接了 accounYoutube。我会在适当的时候使用代码向用户展示仅链接的帐户。
有谁知道可靠的方法吗?
对于错误 404 或权限不足。
基于此 SO question,当您没有请求您的应用程序所需的范围时,return 会出现错误 403/InsufficientPermissions。
虽然 Google 文档中 insufficientPermissions
的描述是为请求提供的 OAuth 2.0 令牌指定的范围不足以访问请求的数据。
因此,请确保请求您需要的所有范围。
关于确定 YouTube 频道是否与帐户相关联的问题。
您可以使用具有属性 status.isLinked
的频道,该属性将 return 一个布尔值,该值将指示频道数据标识的用户是否已链接到 YouTube 用户名或Google+个帐号。拥有其中一个链接的用户已经拥有 public YouTube 身份,这是执行多项操作(例如上传视频)的先决条件。
如果对您有帮助,您也可以查看此SO question了解更多信息。
根据 Google 文档,任何 Google 帐户持有人也是 Youtube 帐户持有人,但他可能不是 "linked",即拥有 Youtube 频道。应用只能将视频上传到关联的帐户。
如果您使用 AccountManager 获取 Google 帐户持有人的列表,那么您无法判断其中任何一个是否已链接。我需要一种方法来确定它是否已链接。
似乎没有直接专门调用 Youtube api 来查看帐户是否有频道(已链接)。
也许可以重新调整以下代码片段的用途:
List<String> scopes = new ArrayList<>();
scopes.add( SendToGoogleUtils."https://www.googleapis.com/auth/youtube.upload" );
if( ( googleAccountCredential = SendToGoogleUtils.getGoogleAccountCredential(
mContext, accountYoutube.name, scopes ) ) == null) return;
String gAToken = googleAccountCredential.getToken();
youtube = new YouTube.Builder(HTTP_TRANSPORT, JSON_FACTORY, googleAccountCredential)
.setApplicationName(getString(R.string.tourmaker_app_name))
.build();
YouTube.Channels.List channelRequest = youtube.channels().list("contentDetails");
channelRequest.setMine(true);
channelRequest.setFields("items/contentDetails,nextPageToken,pageInfo");
ChannelListResponse channelResult = channelRequest.execute();
如果链接了 accountYoutube(参见代码第 4 行),则此代码运行正常,并继续执行后面的上传代码。
如果未链接 accountYoutube,执行语句将抛出 GoogleJsonResponseException:
com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 禁止访问 { "code" : 403, "errors":[{ "domain" : "global", "message" : "Insufficient Permission", "reason" : "insufficientPermissions" } ], "message" : "Insufficient Permission" }
因此,这段代码可以告诉您 Youtube 帐户是否已关联。这种代码是否是确定 accountYoutube 是否有频道(已链接)的合理方法?
我很怀疑,因为这个异常似乎是我可能无法依赖的副作用。
我正在寻找一种最佳做法来确定是否链接了 accounYoutube。我会在适当的时候使用代码向用户展示仅链接的帐户。
有谁知道可靠的方法吗?
对于错误 404 或权限不足。
基于此 SO question,当您没有请求您的应用程序所需的范围时,return 会出现错误 403/InsufficientPermissions。
虽然 Google 文档中 insufficientPermissions
的描述是为请求提供的 OAuth 2.0 令牌指定的范围不足以访问请求的数据。
因此,请确保请求您需要的所有范围。
关于确定 YouTube 频道是否与帐户相关联的问题。
您可以使用具有属性 status.isLinked
的频道,该属性将 return 一个布尔值,该值将指示频道数据标识的用户是否已链接到 YouTube 用户名或Google+个帐号。拥有其中一个链接的用户已经拥有 public YouTube 身份,这是执行多项操作(例如上传视频)的先决条件。
如果对您有帮助,您也可以查看此SO question了解更多信息。