【发布时间】:2014-11-19 12:16:30
【问题描述】:
在我的网络应用程序中,用户可以连接他们的 YouTube 帐户,以便他们可以访问他们的视频上传并通过网络应用程序与他们进行交互。这适用于单个 YouTube 帐户。我正在苦苦思索如何允许人们在不在我的网站上创建多个帐户的情况下链接多个 YouTube 帐户。
Google 的 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)
【问题讨论】:
-
我的应用程序中有完全相同的场景。我遇到的问题是,在回调 servley 代码中,我如何识别哪个用户(由唯一 id 标识)发起了这个 google 帐户链接。所以我知道我应该与哪个用户关联这个帐户授权。你是怎么做到的
标签: python django oauth-2.0 google-api youtube-api