Added UserInfo support

This commit is contained in:
Jaex 2022-12-08 14:48:35 +03:00
parent ffaed07605
commit fc294e69ca
7 changed files with 21 additions and 6 deletions

View file

@ -68,7 +68,7 @@ public YouTube(OAuth2Info oauth)
{ {
OAuth2 = new GoogleOAuth2(oauth, this) 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"
}; };
} }

View file

@ -733,6 +733,7 @@ private void LoadFileUploaderSettings()
#region YouTube #region YouTube
oauth2YouTube.Connected = OAuth2Info.CheckOAuth(Config.YouTubeOAuth2Info); oauth2YouTube.Connected = OAuth2Info.CheckOAuth(Config.YouTubeOAuth2Info);
oauth2YouTube.UserInfo = Config.YouTubeUserInfo;
cbYouTubePrivacyType.Items.Clear(); cbYouTubePrivacyType.Items.Clear();
cbYouTubePrivacyType.Items.AddRange(Helpers.GetLocalizedEnumDescriptions<YouTubeVideoPrivacy>()); cbYouTubePrivacyType.Items.AddRange(Helpers.GetLocalizedEnumDescriptions<YouTubeVideoPrivacy>());
cbYouTubePrivacyType.SelectedIndex = (int)Config.YouTubePrivacyType; cbYouTubePrivacyType.SelectedIndex = (int)Config.YouTubePrivacyType;
@ -3046,16 +3047,20 @@ private void oauth2YouTube_ConnectButtonClicked()
{ {
form.ShowDialog(); form.ShowDialog();
Config.YouTubeOAuth2Info = form.OAuth2Info; Config.YouTubeOAuth2Info = form.OAuth2Info;
Config.YouTubeUserInfo = form.UserInfo;
} }
oauth2YouTube.Connected = Config.YouTubeOAuth2Info != null; oauth2YouTube.Connected = Config.YouTubeOAuth2Info != null;
oauth2YouTube.UserInfo = Config.YouTubeUserInfo;
this.ForceActivate(); this.ForceActivate();
} }
private void oauth2YouTube_DisconnectButtonClicked() private void oauth2YouTube_DisconnectButtonClicked()
{ {
Config.YouTubeOAuth2Info = null; Config.YouTubeOAuth2Info = null;
Config.YouTubeUserInfo = null;
oauth2YouTube.Connected = false; oauth2YouTube.Connected = false;
oauth2YouTube.UserInfo = null;
} }
private void llYouTubePermissionsLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) private void llYouTubePermissionsLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)

View file

@ -66,7 +66,7 @@ public GooglePhotos(OAuth2Info oauth)
{ {
GoogleAuth = new GoogleOAuth2(oauth, this) 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"
}; };
} }

View file

@ -27,6 +27,8 @@ namespace ShareX.UploadersLib
{ {
public interface IOAuth2Loopback : IOAuth2 public interface IOAuth2Loopback : IOAuth2
{ {
OAuthUserInfo GetUserInfo();
string RedirectURI { get; set; } string RedirectURI { get; set; }
string State { get; set; } string State { get; set; }
string Scope { get; set; } string Scope { get; set; }

View file

@ -34,6 +34,7 @@ public partial class OAuthListenerForm : Form
{ {
public IOAuth2Loopback OAuth { get; private set; } public IOAuth2Loopback OAuth { get; private set; }
public OAuth2Info OAuth2Info { get; private set; } public OAuth2Info OAuth2Info { get; private set; }
public OAuthUserInfo UserInfo { get; private set; }
private OAuthListener listener; private OAuthListener listener;
@ -47,7 +48,7 @@ public OAuthListenerForm(IOAuth2Loopback oauth)
private async void OAuthListenerForm_Load(object sender, EventArgs e) private async void OAuthListenerForm_Load(object sender, EventArgs e)
{ {
OAuth2Info = await ConnectAsync(OAuth); await ConnectAsync(OAuth);
Close(); Close();
} }
@ -62,8 +63,11 @@ private void btnCancel_Click(object sender, EventArgs e)
Close(); Close();
} }
private async Task<OAuth2Info> ConnectAsync(IOAuth2Loopback oauth) private async Task<bool> ConnectAsync(IOAuth2Loopback oauth)
{ {
OAuth2Info = null;
UserInfo = null;
try try
{ {
using (listener = new OAuthListener(oauth)) using (listener = new OAuthListener(oauth))
@ -72,7 +76,9 @@ private async Task<OAuth2Info> ConnectAsync(IOAuth2Loopback oauth)
if (result) 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<OAuth2Info> ConnectAsync(IOAuth2Loopback oauth)
e.ShowError(); e.ShowError();
} }
return null; return false;
} }
} }
} }

View file

@ -31,5 +31,6 @@ public class OAuthUserInfo
public string name { get; set; } public string name { get; set; }
public string given_name { get; set; } public string given_name { get; set; }
public string picture { get; set; } public string picture { get; set; }
public string locale { get; set; }
} }
} }

View file

@ -421,6 +421,7 @@ public class UploadersConfig : SettingsBase<UploadersConfig>
#region YouTube #region YouTube
public OAuth2Info YouTubeOAuth2Info { get; set; } = null; public OAuth2Info YouTubeOAuth2Info { get; set; } = null;
public OAuthUserInfo YouTubeUserInfo { get; set; } = null;
public YouTubeVideoPrivacy YouTubePrivacyType { get; set; } = YouTubeVideoPrivacy.Public; public YouTubeVideoPrivacy YouTubePrivacyType { get; set; } = YouTubeVideoPrivacy.Public;
public bool YouTubeUseShortenedLink { get; set; } = false; public bool YouTubeUseShortenedLink { get; set; } = false;
public bool YouTubeShowDialog { get; set; } = false; public bool YouTubeShowDialog { get; set; } = false;