From fc294e69caced04d85ac44640b52c670d2dfd86d Mon Sep 17 00:00:00 2001 From: Jaex Date: Thu, 8 Dec 2022 14:48:35 +0300 Subject: [PATCH] Added UserInfo support --- ShareX.UploadersLib/FileUploaders/YouTube.cs | 2 +- ShareX.UploadersLib/Forms/UploadersConfigForm.cs | 5 +++++ ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs | 2 +- ShareX.UploadersLib/OAuth/IOauth2Loopback.cs | 2 ++ ShareX.UploadersLib/OAuth/OAuthListenerForm.cs | 14 ++++++++++---- ShareX.UploadersLib/OAuth/OAuthUserInfo.cs | 1 + ShareX.UploadersLib/UploadersConfig.cs | 1 + 7 files changed, 21 insertions(+), 6 deletions(-) diff --git a/ShareX.UploadersLib/FileUploaders/YouTube.cs b/ShareX.UploadersLib/FileUploaders/YouTube.cs index 95806d40f..9017c97df 100644 --- a/ShareX.UploadersLib/FileUploaders/YouTube.cs +++ b/ShareX.UploadersLib/FileUploaders/YouTube.cs @@ -68,7 +68,7 @@ public YouTube(OAuth2Info oauth) { OAuth2 = new GoogleOAuth2(oauth, this) { - Scope = "https://www.googleapis.com/auth/youtube.upload" + Scope = "https://www.googleapis.com/auth/youtube.upload https://www.googleapis.com/auth/userinfo.profile" }; } diff --git a/ShareX.UploadersLib/Forms/UploadersConfigForm.cs b/ShareX.UploadersLib/Forms/UploadersConfigForm.cs index 170c2a403..225426bee 100644 --- a/ShareX.UploadersLib/Forms/UploadersConfigForm.cs +++ b/ShareX.UploadersLib/Forms/UploadersConfigForm.cs @@ -733,6 +733,7 @@ private void LoadFileUploaderSettings() #region YouTube oauth2YouTube.Connected = OAuth2Info.CheckOAuth(Config.YouTubeOAuth2Info); + oauth2YouTube.UserInfo = Config.YouTubeUserInfo; cbYouTubePrivacyType.Items.Clear(); cbYouTubePrivacyType.Items.AddRange(Helpers.GetLocalizedEnumDescriptions()); cbYouTubePrivacyType.SelectedIndex = (int)Config.YouTubePrivacyType; @@ -3046,16 +3047,20 @@ private void oauth2YouTube_ConnectButtonClicked() { form.ShowDialog(); Config.YouTubeOAuth2Info = form.OAuth2Info; + Config.YouTubeUserInfo = form.UserInfo; } oauth2YouTube.Connected = Config.YouTubeOAuth2Info != null; + oauth2YouTube.UserInfo = Config.YouTubeUserInfo; this.ForceActivate(); } private void oauth2YouTube_DisconnectButtonClicked() { Config.YouTubeOAuth2Info = null; + Config.YouTubeUserInfo = null; oauth2YouTube.Connected = false; + oauth2YouTube.UserInfo = null; } private void llYouTubePermissionsLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) diff --git a/ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs b/ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs index b8e8854bf..5bec8ccf5 100644 --- a/ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs +++ b/ShareX.UploadersLib/ImageUploaders/GooglePhotos.cs @@ -66,7 +66,7 @@ public GooglePhotos(OAuth2Info oauth) { GoogleAuth = new GoogleOAuth2(oauth, this) { - Scope = "https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/photoslibrary https://www.googleapis.com/auth/photoslibrary.sharing" + Scope = "https://www.googleapis.com/auth/photoslibrary https://www.googleapis.com/auth/photoslibrary.sharing https://www.googleapis.com/auth/userinfo.profile" }; } diff --git a/ShareX.UploadersLib/OAuth/IOauth2Loopback.cs b/ShareX.UploadersLib/OAuth/IOauth2Loopback.cs index a35998ad7..0c38d7fba 100644 --- a/ShareX.UploadersLib/OAuth/IOauth2Loopback.cs +++ b/ShareX.UploadersLib/OAuth/IOauth2Loopback.cs @@ -27,6 +27,8 @@ namespace ShareX.UploadersLib { public interface IOAuth2Loopback : IOAuth2 { + OAuthUserInfo GetUserInfo(); + string RedirectURI { get; set; } string State { get; set; } string Scope { get; set; } diff --git a/ShareX.UploadersLib/OAuth/OAuthListenerForm.cs b/ShareX.UploadersLib/OAuth/OAuthListenerForm.cs index 57ad9f8da..0e8967bfa 100644 --- a/ShareX.UploadersLib/OAuth/OAuthListenerForm.cs +++ b/ShareX.UploadersLib/OAuth/OAuthListenerForm.cs @@ -34,6 +34,7 @@ public partial class OAuthListenerForm : Form { public IOAuth2Loopback OAuth { get; private set; } public OAuth2Info OAuth2Info { get; private set; } + public OAuthUserInfo UserInfo { get; private set; } private OAuthListener listener; @@ -47,7 +48,7 @@ public OAuthListenerForm(IOAuth2Loopback oauth) private async void OAuthListenerForm_Load(object sender, EventArgs e) { - OAuth2Info = await ConnectAsync(OAuth); + await ConnectAsync(OAuth); Close(); } @@ -62,8 +63,11 @@ private void btnCancel_Click(object sender, EventArgs e) Close(); } - private async Task ConnectAsync(IOAuth2Loopback oauth) + private async Task ConnectAsync(IOAuth2Loopback oauth) { + OAuth2Info = null; + UserInfo = null; + try { using (listener = new OAuthListener(oauth)) @@ -72,7 +76,9 @@ private async Task ConnectAsync(IOAuth2Loopback oauth) if (result) { - return listener.OAuth.AuthInfo; + OAuth2Info = listener.OAuth.AuthInfo; + UserInfo = await Task.Run(() => oauth.GetUserInfo()); + return true; } } } @@ -82,7 +88,7 @@ private async Task ConnectAsync(IOAuth2Loopback oauth) e.ShowError(); } - return null; + return false; } } } \ No newline at end of file diff --git a/ShareX.UploadersLib/OAuth/OAuthUserInfo.cs b/ShareX.UploadersLib/OAuth/OAuthUserInfo.cs index cc75d48ea..834860ff6 100644 --- a/ShareX.UploadersLib/OAuth/OAuthUserInfo.cs +++ b/ShareX.UploadersLib/OAuth/OAuthUserInfo.cs @@ -31,5 +31,6 @@ public class OAuthUserInfo public string name { get; set; } public string given_name { get; set; } public string picture { get; set; } + public string locale { get; set; } } } \ No newline at end of file diff --git a/ShareX.UploadersLib/UploadersConfig.cs b/ShareX.UploadersLib/UploadersConfig.cs index 63766baa5..eb97442f0 100644 --- a/ShareX.UploadersLib/UploadersConfig.cs +++ b/ShareX.UploadersLib/UploadersConfig.cs @@ -421,6 +421,7 @@ public class UploadersConfig : SettingsBase #region YouTube public OAuth2Info YouTubeOAuth2Info { get; set; } = null; + public OAuthUserInfo YouTubeUserInfo { get; set; } = null; public YouTubeVideoPrivacy YouTubePrivacyType { get; set; } = YouTubeVideoPrivacy.Public; public bool YouTubeUseShortenedLink { get; set; } = false; public bool YouTubeShowDialog { get; set; } = false;