Google oauth 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凭

我正在从事一个项目,涉及通过数据API访问YouTube频道。我在客户机上使用了
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;
            }
        );
    }
        
这会提示输入品牌渠道/帐户,但除非我选择最初登录的主帐户,否则它将无法授权

我有一种感觉,我正在以一种根本错误的方式进行这件事。我在谷歌的文档中找不到多少关于访问品牌账户的指导

总之,我希望用户以自己的身份登录(验证)。然后获得授权访问他们的任何品牌帐户。实现这一点的建议流程是什么

一如既往地感谢你的帮助