Update YouTube credentials handling to include channel title in home template

This commit is contained in:
Edgar P. Burkhart 2025-06-15 10:17:08 +02:00
parent aafb7817c2
commit da29634e57
Signed by: edpibu
GPG key ID: 9833D3C5A25BD227
2 changed files with 11 additions and 1 deletions

View file

@ -11,6 +11,8 @@
<p> <p>
{% if not user.youtubecredentials.credentials %} {% if not user.youtubecredentials.credentials %}
<a href="{% url "youtube_login" %}" role="button"><i class="ri-youtube-fill"></i> Me connecter au compte Youtube</a> <a href="{% url "youtube_login" %}" role="button"><i class="ri-youtube-fill"></i> Me connecter au compte Youtube</a>
{% else %}
<i class="ri-youtube-fill"></i> Connecté au compte Youtube <strong>{{ user.youtubecredentials.credentials.channel_title }}</strong>.
{% endif %} {% endif %}
</p> </p>
{% if user.owned_group_set.exists or user.group_set.exists %} {% if user.owned_group_set.exists or user.group_set.exists %}

View file

@ -1,6 +1,7 @@
import random import random
import google_auth_oauthlib import google_auth_oauthlib
import googleapiclient
from django.conf import settings from django.conf import settings
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.auth.mixins import LoginRequiredMixin
@ -363,6 +364,13 @@ class YoutubeCallbackView(LoginRequiredMixin, View):
flow.fetch_token(code=request.GET.get("code")) flow.fetch_token(code=request.GET.get("code"))
credentials = flow.credentials credentials = flow.credentials
yt_api = googleapiclient.discovery.build(
"youtube", "v3", credentials=credentials
)
channel_request = yt_api.channels().list(part="snippet", mine=True)
res = channel_request.execute()
models.YoutubeCredentials.objects.update_or_create( models.YoutubeCredentials.objects.update_or_create(
user=request.user, user=request.user,
defaults={ defaults={
@ -373,10 +381,10 @@ class YoutubeCallbackView(LoginRequiredMixin, View):
"client_id": credentials.client_id, "client_id": credentials.client_id,
"client_secret": credentials.client_secret, "client_secret": credentials.client_secret,
"granted_scopes": credentials.granted_scopes, "granted_scopes": credentials.granted_scopes,
"channel_title": res["items"][0]["snippet"]["title"],
} }
}, },
) )
messages.add_message(request, messages.SUCCESS, "Connexion à Youtube réussie.") messages.add_message(request, messages.SUCCESS, "Connexion à Youtube réussie.")
return redirect("/") return redirect("/")