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