В моем веб-приложении пользователь может подключаться к своим учетным записям YouTube, чтобы они могли получать доступ к своим видеозаписям и взаимодействовать с ними через веб-приложение. Это отлично подходит для одного аккаунта YouTube. Я борюсь с тем, как я могу позволить людям связывать несколько аккаунтов YouTube, не создавая несколько учетных записей на моем сайте.Как управлять несколькими учетными записями Google через oauth2
Поддерживается ли это API Google?
Вот что я пытался сделать (используя Python и Django) ... сократил его, чтобы он был немного более управляемым. В принципе, я не могу заставить Google повторно зайти и попросить новое разрешение ... похоже, просто знает, кто является пользователем и отвечает. Любая помощь в любом направлении ценится.
# 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. Я знаю, с каким пользователем я должен был бы связать эту авторизацию учетной записи. Как у вас это получилось? – zee