Google oauth YouTube品牌帐户的身份验证和授权
我正在从事一个项目,涉及通过数据API访问YouTube频道。我在客户机上使用了Google oauth YouTube品牌帐户的身份验证和授权,google-oauth,youtube-data-api,Google Oauth,Youtube Data Api,我正在从事一个项目,涉及通过数据API访问YouTube频道。我在客户机上使用了gapi(实际上是gapi的角度包装器),我还有一些使用Java客户机的服务器端代码。服务器端代码通过离线令牌流获得访问权限 对于用户的主要账户YouTube频道来说,一切都很顺利,但我正努力想办法为其他链接的所谓品牌账户做到这一点 我知道,如果我使用YouTube scopes进行授权,它会提示输入品牌频道,但如果我这样做,它实际上会使用该用户id进行授权,而不是主要用户id。我始终希望用户使用其标准google凭
gapi
(实际上是gapi
的角度包装器),我还有一些使用Java客户机的服务器端代码。服务器端代码通过离线令牌流获得访问权限
对于用户的主要账户YouTube频道来说,一切都很顺利,但我正努力想办法为其他链接的所谓品牌账户做到这一点
我知道,如果我使用YouTube scopes进行授权,它会提示输入品牌频道,但如果我这样做,它实际上会使用该用户id进行授权,而不是主要用户id。我始终希望用户使用其标准google凭据登录(验证),以便我有一个主要用户来处理
我一直在用作用域初始化GAPI
https://www.googleapis.com/auth/userinfo.profile
因此,它不会在登录时提示输入频道
我的gapi
config如下所示:
let gapiClientConfig: NgGapiClientConfig = {
client_id: "**************.apps.googleusercontent.com",
discoveryDocs: ["https://www.googleapis.com/discovery/v1/apis/youtube/v3/rest"],
ux_mode: "popup",
scope: ["https://www.googleapis.com/auth/userinfo.profile"].join(" ")
};
public signIn() {
this.googleAuthService.getAuth().subscribe((auth) => {
auth.signIn().then(res => this.signInSuccessHandler(res), err => this.signInErrorHandler(err));
});
}
登录方式如下所示:
let gapiClientConfig: NgGapiClientConfig = {
client_id: "**************.apps.googleusercontent.com",
discoveryDocs: ["https://www.googleapis.com/discovery/v1/apis/youtube/v3/rest"],
ux_mode: "popup",
scope: ["https://www.googleapis.com/auth/userinfo.profile"].join(" ")
};
public signIn() {
this.googleAuthService.getAuth().subscribe((auth) => {
auth.signIn().then(res => this.signInSuccessHandler(res), err => this.signInErrorHandler(err));
});
}
这会提示输入用户的主要Google帐户(如果有Cookie,则会自动登录)。从这一点开始,我可以将脱机令牌授予我的服务器,并且客户端和服务器都对用户的主通道感到满意
我想,从那以后,我可以授权给这样一个品牌账户:
public getChannelAccess() {
let scopes = [
"https://www.googleapis.com/auth/youtube.readonly",
"https://www.googleapis.com/auth/youtube",
"https://www.googleapis.com/auth/youtube.force-ssl"
].join(" ");
gapi.auth2.getAuthInstance().currentUser.get().grant({ scope: scopes, prompt: 'select_account' }).then(
result => {
console.log(result);
},
err => {
console.error(err);
this.error = err;
}
);
}
这会提示输入品牌渠道/帐户,但除非我选择最初登录的主帐户,否则它将无法授权
我有一种感觉,我正在以一种根本错误的方式进行这件事。我在谷歌的文档中找不到多少关于访问品牌账户的指导
总之,我希望用户以自己的身份登录(验证)。然后获得授权访问他们的任何品牌帐户。实现这一点的建议流程是什么
一如既往地感谢你的帮助