Python 如何通过oauth2管理多个Google帐户

Python 如何通过oauth2管理多个Google帐户,python,django,oauth-2.0,google-api,youtube-api,Python,Django,Oauth 2.0,Google Api,Youtube Api,在我的web应用程序中,用户可以连接他们的YouTube帐户,这样他们就可以访问他们上传的视频,并通过web应用程序与他们进行交互。这对于一个YouTube帐户来说非常有效。我正在努力解决如何允许人们链接多个YouTube帐户而不在我的网站上创建多个帐户的问题 谷歌的API支持这一点吗 下面是我尝试做的(使用Python和Django)。。。把它剪下来,让它更容易管理。基本上,我不能让谷歌重新启动并要求新的授权。。。它似乎只知道用户是谁并做出响应。任何方向的帮助都将不胜感激 # models.p

在我的web应用程序中,用户可以连接他们的YouTube帐户,这样他们就可以访问他们上传的视频,并通过web应用程序与他们进行交互。这对于一个YouTube帐户来说非常有效。我正在努力解决如何允许人们链接多个YouTube帐户而不在我的网站上创建多个帐户的问题

谷歌的API支持这一点吗

下面是我尝试做的(使用Python和Django)。。。把它剪下来,让它更容易管理。基本上,我不能让谷歌重新启动并要求新的授权。。。它似乎只知道用户是谁并做出响应。任何方向的帮助都将不胜感激

# models.py
class YouTubeAccount(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    google_plus_id = models.CharField(max_length=50, editable=False, null=True)
    display_name = models.CharField(max_length=255, null=True)

class FlowModel(models.Model):
    id = models.ForeignKey(YouTubeAccount, primary_key=True)
    flow = FlowField()

class CredentialsModel(models.Model):
    id = models.ForeignKey(YouTubeAccount, primary_key=True)
    credential = CredentialsField()
然后在添加帐户的视图中:

@login_required
def add_account(request):
    yt_acct = YouTubeAccount.objects.create(user=request.user)
    yt_acct.save()

    # i thought maybe I use the yt_account as my flow state
    FLOW.params['state'] = xsrfutil.generate_token(settings.SECRET_KEY, yt_acct)
    authorize_url = FLOW.step1_get_authorize_url()
    return HttpResponseRedirect(authorize_url)

@login_required
def return_authorization(request):

    yt_acct = YouTubeAccount.objects.get(user=request.user, google_plus_id__isnull=True, display_name__isnull=True)

    if not xsrfutil.validate_token(settings.SECRET_KEY,
                                    request.REQUEST['state'],
                                    yt_acct):
        return  HttpResponseBadRequest()

    credential = FLOW.step2_exchange(request.REQUEST)

    http = httplib2.Http()
    http = credential.authorize(http)

是的,他们将在验证时选择使用哪个帐户,或者他们可以只指定一个默认帐户。 以下是更多信息:

但是,如果您要求一个用户拥有多个Google帐户,那么您可以要求他们再次通过OAuth。在每个操作中,您只能使用一个用户OAuth,因此每个帐户都应该重复所有aPI调用。下面是使用客户端库的PHP示例。在这些文件中,您可以简单地将其存储到多个json文件中,让它们通过OAuth访问任意数量的文件。

如果我读对了,一个谷歌账户可以有多个“渠道”。。。实际上,不同的YouTube账户。所以用户必须首先在谷歌端设置这个。。。因为我最初问的是,我如何实现多个谷歌账户?这有意义吗?谢谢感谢您提供的信息-我使用python示例为我的用户上传构建了应用程序。我遇到的问题是如何强制用户重新启动oauth?仅仅删除凭证存储是行不通的——谷歌会神奇地自动重新启动用户。我的应用程序中有完全相同的场景。我遇到的问题是,在回调servley代码时,如何识别哪个用户(由唯一id标识)启动了此google帐户链接。这样我就知道应该将此帐户授权与哪个用户关联。你是怎么做到的