【问题标题】:How to manage multiple Google accounts via oauth2如何通过 oauth2 管理多个 Google 帐户
【发布时间】: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


【解决方案1】:

是的,他们会选择在进行身份验证时使用哪个帐户,或者他们可以指定一个默认值。 这里有更多信息:http://apiblog.youtube.com/2013/06/google-page-identities-and-youtube-api.html

但如果您要求一位用户拥有多个 Google 帐户,那么您可以要求他们再次通过 OAuth。并且在每个操作中您只能使用一个用户 OAuth,因此每个帐户都应重复所有 API 调用。这是使用客户端库的 PHP 示例。在这些中,您可以简单地存储到多个 json 文件等中,让它们尽可能多地通过 OAuth。 https://github.com/youtube/api-samples/tree/master/python

【讨论】:

  • 看起来,如果我没看错的话,一个 Google 帐户可以有多个“频道”......实际上是不同的 YouTube 帐户。因此,用户必须首先在 Google 端进行设置……因为我最初要问的是如何实现多个 Google 帐户?那有意义吗?谢谢!
  • 感谢您提供的信息 - 我使用 python 示例为我的用户上传构建应用程序。我遇到的问题是如何强制用户重新启动他们的 oauth?仅仅删除凭证存储是行不通的——谷歌会神奇地自动重新启动用户。
猜你喜欢
  • 1970-01-01
  • 2013-11-14
  • 2016-10-09
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-11
  • 2020-10-14
相关资源
最近更新 更多