public async Task <string> GetAccessTokenAsync(AppInfoWrapper appInfo, string mastodonName, string mastodonInstance) { using (var authHandler = new AuthHandler(mastodonInstance)) { //Get Oauth Code var oauthCodeUrl = authHandler.GetOauthCodeUrl(appInfo.client_id, AppScopeEnum.Read | AppScopeEnum.Write | AppScopeEnum.Follow); var code = ""; var t = Task.Factory.StartNew ( () => { var mastodonWindows = new MastodonOauth(oauthCodeUrl); mastodonWindows.ShowDialog(); code = mastodonWindows.Code; }, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.FromCurrentSynchronizationContext() ); t.Wait(); //Get token var token = await authHandler.GetTokenInfoAsync(appInfo.client_id, appInfo.client_secret, code); return(token.access_token); } }
public void GetOauthUrl() { var instanceName = Settings.InstanceName; var clientId = Settings.ClientId; var authHandler = new AuthHandler(instanceName); var url = authHandler.GetOauthCodeUrl(clientId, AppScopeEnum.Read | AppScopeEnum.Write); Assert.AreEqual($"https://{instanceName}/oauth/authorize?scope=read%20write&response_type=code&redirect_uri=urn:ietf:wg:oauth:2.0:oob&client_id={clientId}", url); }