Example #1
0
        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);
        }