// this whole showdialog below is to avoid the race condition where one message dialog is being killed
        // but the second one comes up before the first one is gone and the framework throws an "UnauthorizedAccessException"
        // solution from: http://stackoverflow.com/questions/13813065/winrt-messagedialog-showasync-will-throw-unauthorizedaccessexception-in-my-cus
        Task ShowDialog(AccessTokenData session)
        {
            CoreDispatcher dispatcher          = Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher;
            Func <object, Task <bool> > action = null;

            action = async(o) =>
            {
                try
                {
                    if (dispatcher.HasThreadAccess)
                    {
                        await new MessageDialog("Authentication via Webview succeeded. Expiry date: " + session.Expires.ToString()).ShowAsync();
                    }
                    else
                    {
                        dispatcher.RunAsync(CoreDispatcherPriority.Normal,
                                            () => action(o));
                    }
                    return(true);
                }
                catch (UnauthorizedAccessException)
                {
                    if (action != null)
                    {
                        Task.Delay(500).ContinueWith(async t => await action(o));
                    }
                }
                return(false);
            };
            return(action(null));
        }
        /// <summary>
        /// When AccessToken is invalid then refresh new one replace
        /// </summary>
        /// <param name="platformType">Platform Type</param>
        public void RefreshInValidAccessToken(PlatformType platformType)
        {
            AuthorizeConfig   oauthConfig       = GetAuthorizeConfig(platformType);
            DataRequestHelper dataRequestHelper = new DataRequestHelper();
            string            requestUrl        = string.Empty;

            if (platformType == PlatformType.Tencent)
            {
                #region refresh new accesstoke tencent accesstoken
                AccessTokenData     tencentToken        = IsolatedStorageSettings.ApplicationSettings["tencenttoken"] as AccessTokenData;
                TencentSocialHelper tencentSocialHelper = new TencentSocialHelper();
                requestUrl = tencentSocialHelper.GetRefreshAccessTokenUrl(oauthConfig.Url, oauthConfig.AppKey, tencentToken.RefreshToken);

                if (tencentSocialHelper.PostArgumentList != null)
                {
                    dataRequestHelper.ExcuteAsyncRequest(requestUrl, Method.POST, tencentSocialHelper.PostArgumentList);
                }
                else
                {
                    dataRequestHelper.ExcuteAsyncRequest(requestUrl, Method.POST);
                }
                dataRequestHelper.AsyncResponseComplated += (responseData, ex) =>
                {
                    if (!string.IsNullOrEmpty(responseData.ToString()))
                    {
                    }
                };
                #endregion
            }
            else if (platformType == PlatformType.Sina)
            {
            }
        }
        /// <summary>
        /// 根据当前时间 判断Access_Token 是否超期  如果超期返回新的Access_Token   否则返回之前的Access_Token
        /// </summary>
        /// <returns></returns>
        public static string GetExistAccessToken()
        {
            string token       = string.Empty;
            var    respository = new AccessTokenData();
            //读库
            var exist = respository.GetToken(1);

            token = exist.access_token;
            DateTime lastTime = exist.LastTime;

            if (DateTime.Now > lastTime)
            {
                //重新获取
                lastTime = DateTime.Now;
                var newToken = GetAccessToken();
                lastTime = lastTime.AddSeconds(newToken.expires_in).AddMinutes(-10);
                //入库
                exist.LastTime     = lastTime;
                exist.access_token = newToken.access_token;
                exist.expires_in   = newToken.expires_in;
                respository.Update(exist);

                token = newToken.access_token;
            }

            return(token);
        }
Example #4
0
        /// <summary>
        /// Fetches data returned by login dialog from callback uri. Creates and saves new AccessTokenData object to current session.
        /// Calls getLoginStatus internally to fill AccessTokenData with such values as FacebookId and CurrentPermissions
        /// </summary>
        /// <param name="uri">Callback uri of login dialog</param>
        private static Task <AccessTokenData> FetchLoginUriAsync(Uri uri)
        {
            var tcs = new TaskCompletionSource <AccessTokenData>();

            Deployment.Current.Dispatcher.BeginInvoke(() =>
            {
                var oauthResult = FbClient.ParseOAuthCallbackUrl(uri);
                if (oauthResult.IsSuccess)
                {
                    var tempToken = new AccessTokenData
                    {
                        AccessToken = oauthResult.AccessToken,
                        Expires     = oauthResult.Expires
                    };

                    tcs.SetResult(tempToken);
                }
                else
                {
                    tcs.SetException(new Exception(oauthResult.Error));
                }
            });

            return(tcs.Task);
        }
Example #5
0
        public virtual async Task SetupClient()
        {
            Configure();

            FreeAgentClient.UseSandbox = FreeAgentKeyStorage.UseSandbox;
            if (FreeAgentKeyStorage.UseProxy)
            {
                FreeAgentClient.Proxy = new WebProxy("127.0.0.1", 8888);
            }

            Client = new FreeAgentClient(new NullLogger <FreeAgentClient>(), new AuthenticationData(FreeAgentKeyStorage.AppKey, FreeAgentKeyStorage.AppSecret));

            var sandboxTestToken = new AccessTokenData
            {
                AccessToken  = "",
                RefreshToken = FreeAgentKeyStorage.RefreshToken,
                TokenType    = "bearer"
            };

            Client.CurrentAccessToken = sandboxTestToken;

            Token = await Client.RefreshToken(sandboxTestToken).ConfigureAwait(false);

            if (Token == null || string.IsNullOrEmpty(Token.AccessToken) || string.IsNullOrEmpty(Token.RefreshToken))
            {
                throw new Exception("Could not setup the Token");
            }
        }
 void ParseAccessToken(AccessTokenData data)
 {
     if (data != null)
     {
         Log.d("access_token", data.ToString());
         YNoteUtil.access_token        = data.oauth_token;
         YNoteUtil.access_token_secret = data.oauth_token_secret;
     }
 }
Example #7
0
        public TwitterClientBase(ConsumerData consumerData,AccessTokenData token)
        {
            this.consumerData = consumerData;

            this.accessToken = token;
            httpClient = OAuthUtility.CreateOAuthClient(ConsumerData.ConsumerKey, ConsumerData.ConsumerSecret,new AccessToken(AccessToken.AccessToken,AccessToken.TokenSecret));

            httpClient.Timeout = System.Threading.Timeout.InfiniteTimeSpan;
        }
Example #8
0
 public FollowStream(ConsumerData consumer, AccessTokenData token, User user)
     : base(consumer, token, user, TwitterUrl.FilterStreamingUrl + "?follow=" + user.id_str)
 {
     GetStreamMe        += async(e) => { };
     GetStreamMention   += async(e) => { };
     GetStreamRetweet   += async(e) => { };
     GetStreamDelete    += async(e) => { };
     GetStreamRetweeted += async(e) => { };
 }
Example #9
0
        public TwitterClientBase(ConsumerData consumerData, AccessTokenData token)
        {
            this.consumerData = consumerData;

            this.accessToken = token;
            httpClient       = OAuthUtility.CreateOAuthClient(ConsumerData.ConsumerKey, ConsumerData.ConsumerSecret, new AccessToken(AccessToken.AccessToken, AccessToken.TokenSecret));

            httpClient.Timeout = System.Threading.Timeout.InfiniteTimeSpan;
        }
Example #10
0
        public TwitterAccount(ConsumerData consumerData, AccessTokenData accessToken, string screenName)
        {
            IsActive = false;

            friendsScreenNameList = new ObservableCollection <string>();
            TwitterClient         = new TwitterClient(consumerData, accessToken);

            ScreenName = screenName;
        }
Example #11
0
 public FollowStream(ConsumerData consumer,AccessTokenData token,User user)
     :base(consumer,token,user,TwitterUrl.FilterStreamingUrl+"?follow="+user.id_str)
 {
     GetStreamMe += async (e) => { };
     GetStreamMention += async (e) => { };
     GetStreamRetweet += async (e) => { };
     GetStreamDelete += async (e) => { };
     GetStreamRetweeted += async (e) => { };
 }
Example #12
0
 public string GenerateToken(AccessTokenData accessTokenData)
 {
     return(new JwtBuilder()
            .WithAlgorithm(new HMACSHA256Algorithm())
            .WithSecret(JwtSecret)
            .AddClaim("exp", DateTimeOffset.UtcNow.AddHours(2).ToUnixTimeSeconds())
            .AddClaim("username", accessTokenData.Username)
            .AddClaim("userKey", accessTokenData.UserKey)
            .Build());
 }
Example #13
0
 public TwitterStreamBase(ConsumerData consumerData, AccessTokenData token, User user, string streamingUrl)
     : base(consumerData, token)
 {
     this.UserInformation = user;
     this.streamingUrl    = streamingUrl;
     ConnectEndFlag       = false;
     ChangeStreamEvent   += (state) => { };
     OnStreamError       += e => { };
     StreamState          = StreamState.DisConnect;
 }
Example #14
0
        private void SetAccessToken(AccessTokenData accessToken)
        {
            var cookie = new HttpCookie(AccessTokenKey)
            {
                HttpOnly = true,
                Expires  = DateTime.Today.AddSeconds(accessToken.ExpiresIn),
                Value    = JsonConvert.SerializeObject(accessToken)
            };

            HttpContext.Current.Response.SetCookie(CookieSecure.Encode(cookie, CookieProtection.Encryption));
        }
Example #15
0
 public TwitterStreamBase(ConsumerData consumerData,AccessTokenData token,User user,string streamingUrl)
     :base(consumerData,token)
 {
    
     this.UserInformation = user;
     this.streamingUrl = streamingUrl;
     ConnectEndFlag = false;
     ChangeStreamEvent += (state) => { };
     OnStreamError += e => { };
     StreamState = StreamState.DisConnect;
 }
Example #16
0
 /// <summary>
 /// Creates a new AccessTokenData object and copies all the properties from the source one.
 /// </summary>
 /// <param name="tokenData">Source AccessTokenData object</param>
 /// <returns>Cloned AccessTokenData object</returns>
 internal static AccessTokenData Clone(this AccessTokenData tokenData)
 {
     return(new AccessTokenData
     {
         AccessToken = tokenData.AccessToken,
         AppId = tokenData.AppId,
         CurrentPermissions = tokenData.CurrentPermissions,
         Expires = tokenData.Expires,
         FacebookId = tokenData.FacebookId,
         Issued = tokenData.Issued
     });
 }
Example #17
0
        public NoteResponse Create(NoteRequest model, AccessTokenData accessTokenData)
        {
            ValidateNote(model);

            var addedNote = _notesRepository.Create(new NoteEntity()
            {
                Name        = model.Name,
                CreatedTime = DateTime.Now,
                UpdateTime  = DateTime.Now,
                Text        = model.Text,
                UserKey     = accessTokenData.UserKey
            });

            return(ToNoteResponse(addedNote));
        }
        private static LoginCompletedArgs RetrieveLoginResponse(NavigationEventArgs e, string fbAppId, string extendedPermissions)
        {
            if (!e.Uri.AbsoluteUri.StartsWith(Constants.RedirectUriLogin))
            {
                return(null);
            }
            string str1 = HttpUtility.HtmlDecode(e.Uri.Fragment).TrimStart('#');

            var accessTokenData = new AccessTokenData();

            accessTokenData.CurrentPermissions = extendedPermissions.Split(',');
            accessTokenData.AppId = fbAppId;
            foreach (string str2 in str1.Split('&'))
            {
                string[] strArray = str2.Split('=');
                if (strArray.Length == 2)
                {
                    switch (strArray[0])
                    {
                    case "access_token":
                        accessTokenData.AccessToken = strArray[1];
                        break;

                    case "expires_in":
                        DateTime expired;
                        if (DateTime.TryParse(strArray[1], out expired))
                        {
                            accessTokenData.Expires = expired;
                        }
                        break;

                    case "state":
                        accessTokenData.State = strArray[1];
                        break;

                    case "issued":
                        DateTime issued;
                        if (DateTime.TryParse(strArray[1], out issued))
                        {
                            accessTokenData.Issued = issued;
                        }
                        break;
                    }
                }
            }
            return(new LoginCompletedArgs(true, accessTokenData));
        }
Example #19
0
        public RestRequest CreateRefreshTokenRequest(AccessTokenData token)
        {
            // grant_type=authorization_code
            // code=<the code from the url>
            // redirect_url = <if it was provided before>

            var request = new RestRequest(Method.POST);

            request.Resource = "v{version}/token_endpoint";
            request.AddParameter("version", version, ParameterType.UrlSegment);
            request.AddParameter("grant_type", "refresh_token", ParameterType.GetOrPost);
            request.AddParameter("client_id", ApiKey, ParameterType.GetOrPost);
            request.AddParameter("client_secret", ApiSecret, ParameterType.GetOrPost);
            request.AddParameter("refresh_token", token.RefreshToken, ParameterType.GetOrPost);

            return(request);
        }
Example #20
0
        public async Task <IActionResult> Index(string?code, string?error, [FromQuery(Name = "error_description")] string?errorDescription)
        {
            if (error is not null || errorDescription is not null)
            {
                _logger.LogWarning($"Got error '{error}' with description '{errorDescription}'");
                var model = new VkErrorModel {
                    ExceptionType = error !, Message = errorDescription !
                };
                return(View(model));
            }

            if (code is null)
            {
                _logger.LogError("Authentication code is null");
                var model = new VkErrorModel {
                    ExceptionType = "Bad query", Message = "Authentication code is null"
                };
                return(View(model));
            }

            _logger.LogInformation("Got auth code");

            try
            {
                AccessTokenData accessToken = await _vkAuthService.Auth(code);

                HttpContext.Session.Set("AccessToken", accessToken);

                User user = await _vkApiService.GetUser(accessToken.UserId, accessToken.AccessToken);

                HttpContext.Session.Set("User", user);
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Unable to authorize in VK");
                var errorModel = new VkErrorModel {
                    ExceptionType = e.GetType().Name, Message = e.Message
                };
                return(View(errorModel));
            }

            return(Redirect("/"));
        }
    }
Example #21
0
        public async Task LogoutAsync()
        {
            ShowLoading(true, "Logging out from Facebook");

            currentState = CurrentState.Logout;

            if (AccessTokenData != null)
            {
                AccessTokenData.Reset();
            }
            await webView.WebBrowser.ClearCookiesAsync();

            await webView.WebBrowser.ClearInternetCacheAsync();

            DeleteCookiesFromIsolatedStorage();
            //isSetCookie = false;

            NavigateToHide();
        }
Example #22
0
        private FacebookService()
        {
            facebookClient  = new FacebookClient();
            AccessTokenData = new AccessTokenData();

            webView = new FBWebBrowserControl();
            webView.WebBrowser.IsScriptEnabled   = true;
            webView.WebBrowser.LoadCompleted    += WebView_LoadCompleted;
            webView.WebBrowser.Navigated        += WebView_Navigated;
            webView.WebBrowser.NavigationFailed += WebView_NavigationFailed;
            webView.ButtonClose.Tap             += ButtonClose_Tap;

            IsPopup = true;
            popup   = new Popup();

            webBrowserNavigatedTimer = new DispatcherTimer
            {
                Interval = new TimeSpan(0, 0, WebBrowserNavigatedTimeOut)
            };
            webBrowserNavigatedTimer.Tick += WebBrowserNavigatedTimerTick;
        }
        public void CanGetList()
        {
            FreeAgentClient.UseSandbox = true;

            var sandboxBttestToken = new AccessTokenData
            {
                AccessToken  = "",
                RefreshToken = FreeAgentKeyStorage.RefreshToken,
                TokenType    = "bearer"
            };

            var client = new FreeAgentClient(new NullLogger <FreeAgentClient>(), new AuthenticationData(FreeAgentKeyStorage.AppKey, FreeAgentKeyStorage.AppSecret));

            client.CurrentAccessToken = sandboxBttestToken;

            try
            {
                var co = client.Company.Single();
            }
            catch
            {
            }

            FreeAgentClient.UseSandbox = false;
            var liveClient = new FreeAgentClient(new NullLogger <FreeAgentClient>(), new AuthenticationData(FreeAgentKeyStorage.AppKey, FreeAgentKeyStorage.AppSecret));

            liveClient.CurrentAccessToken = sandboxBttestToken;

            try
            {
                var co = liveClient.Company.Single();
            }
            catch
            {
            }

            Assert.IsTrue(true);
        }
        /// <summary>
        /// Validate Access Token is invalid
        /// but if you local datetime then it was can be changed by user define
        /// </summary>
        /// <param name="platformType">Platform Type</param>
        /// <returns>is in valid</returns>
        public bool ValidateAccessTokenIsValid(PlatformType platformType)
        {
            bool            isInValided     = false;
            AccessTokenData accessTokenData = null;

            if (platformType == PlatformType.Tencent)
            {
                accessTokenData = IsolatedStorageSettings.ApplicationSettings["tencenttoken"] as AccessTokenData;
            }
            else if (platformType == PlatformType.Sina)
            {
                accessTokenData = IsolatedStorageSettings.ApplicationSettings["sinatoken"] as AccessTokenData;
            }

            DateTime endDatetime  = accessTokenData.CreateDate.AddSeconds(accessTokenData.ExpiresIn);
            int      compareValue = endDatetime.CompareTo(DateTime.Now);

            if (compareValue < 0)
            {
                isInValided = true;//access token is invalid please refresh new one
            }
            return(isInValided);
        }
 public LoginCompletedArgs(bool isSuccess, AccessTokenData accessTokenData = null, FBUser userInfo = null)
 {
     AccessTokenData = accessTokenData;
     IsSuccess       = isSuccess;
     UserInfo        = userInfo;
 }
Example #26
0
        /// <summary>
        /// Checks if there is new permissions required for current AccessTokenData
        /// </summary>
        /// <param name="tokenData">AccessTokenData object to check for permissions</param>
        /// <param name="newPermissions">Permissions array that should be verified</param>
        /// <returns>True if token nneds to be extended with new permissions</returns>
        internal static bool NeedNewPermissions(this AccessTokenData tokenData, string[] newPermissions)
        {
            var tempPermissions = tokenData.CurrentPermissions.Intersect(newPermissions);

            return(tempPermissions.Count() < newPermissions.Count());
        }
Example #27
0
        // ReSharper restore InconsistentNaming, UnusedMember.Global

        #region Private methods

        /// <summary>
        /// Updates an AccessTokenData object with data fetched from FB API.
        /// Updates ActiveSession with updated AccessTokenData object.
        /// Uses CurrentAccessTokenData if parameter is null
        /// </summary>
        /// <param name="tempToken">AccessTokenData object to update</param>
        /// <returns>LoginStatus object</returns>
        private static Task <LoginStatus> UpdateAndGetLoginStatus(AccessTokenData tempToken = null)
        {
            var tcs = new TaskCompletionSource <LoginStatus>();

            Deployment.Current.Dispatcher.BeginInvoke(async() =>
            {
                if (tempToken != null)
                {
                    CurrentTokenData = tempToken;
                }

                if (string.IsNullOrEmpty(CurrentTokenData.AccessToken))
                {
                    tcs.SetResult(new LoginStatus {
                        Status = "unknown"
                    });
                    return;
                }

                await Session.CheckAndExtendTokenIfNeeded();

                if (CurrentTokenData.CurrentPermissions.Count == 0 || string.IsNullOrEmpty(CurrentTokenData.FacebookId))
                {
                    // Create a copy of existing access token data to update it with new values
                    var newTokenData = CurrentTokenData.Clone();

                    try
                    {
                        var result =
                            (JsonObject)
                            await
                            FbClient.GetTaskAsync("debug_token",
                                                  new { input_token = CurrentTokenData.AccessToken });

                        var data = (JsonObject)result.ToDictionary(pair => pair.Key, pair => pair.Value)["data"];

                        var userId = (string)data.ToDictionary(pair => pair.Key, pair => pair.Value)["user_id"];
                        newTokenData.FacebookId = userId;

                        var actualPermissions = (JsonArray)data.ToDictionary(pair => pair.Key, pair => pair.Value)["scopes"];
                        foreach (var actualPermission in actualPermissions)
                        {
                            newTokenData.CurrentPermissions.Add((string)actualPermission);
                        }

                        Session.ActiveSession.CurrentAccessTokenData = newTokenData;
                    }
                    catch
                    {
                        // No need to fail here, just return a loginStatus object without userID
                    }
                }

                var loginStatus = new LoginStatus
                {
                    Status       = "connected",
                    AuthResponse = new AuthResponse
                    {
                        AccessToken = CurrentTokenData.AccessToken,
                        ExpiresIn   = CurrentTokenData.Expires,
                        UserId      = CurrentTokenData.FacebookId
                    }
                };

                tcs.SetResult(loginStatus);
            });

            return(tcs.Task);
        }
Example #28
0
 public TwitterClient(ConsumerData consumerData, AccessTokenData token)
     : base(consumerData, token)
 {
 }
Example #29
0
 public UserStream(ConsumerData consumerData,AccessTokenData token,User user)
     :base(consumerData,token,user,TwitterUrl.UserStreamingUrl)
 {
     
 }
        /// <summary>
        /// Send TExt Content With Picture to social platform
        /// </summary>
        /// <param name="platformType">platfrom Type</param>
        /// <param name="content">Content TExt</param>
        /// <param name="picFileStream">Upload File Stream</param>
        public void SendTextWithPicContent(PlatformType platformType, string content, Stream picFileStream)
        {
            AuthorizeConfig   authorizeConfig   = GetAuthorizeConfig(platformType);
            DataRequestHelper dataRequestHelper = new DataRequestHelper();
            string            requestUrl        = string.Empty;

            //upload picture as text content
            byte[] picBytes = new byte[picFileStream.Length];
            picFileStream.Seek(0, SeekOrigin.Begin);
            picFileStream.Read(picBytes, 0, picBytes.Length);

            //notice : when you add fileparameter rename filename to api convert
            List <FileParameter> uploadFileList = new List <FileParameter>()
            {
                FileParameter.Create("pic", picBytes, DateTime.Now.ToString("yyyyMMddHHmmss"))
            };

            if (platformType == PlatformType.Tencent)
            {
                #region send text with picture to tencent platform
                AccessTokenData     tokenData           = IsolatedStorageSettings.ApplicationSettings["tencenttoken"] as AccessTokenData;
                TencentSocialHelper tencentSocialHelper = new TencentSocialHelper();
                requestUrl = tencentSocialHelper.GetTextContentWithPicUrl(authorizeConfig.OauthApiUrl, authorizeConfig.AppKey, tokenData.AccessToken, tokenData.OpenId, content, FormatType.Json);

                if (tencentSocialHelper.PostArgumentList != null)
                {
                    dataRequestHelper.ExcuteAsyncRequest(requestUrl, Method.POST, tencentSocialHelper.PostArgumentList, uploadFileList);
                }
                else
                {
                    dataRequestHelper.ExcuteAsyncRequest(requestUrl, Method.POST, null, uploadFileList);
                }
                dataRequestHelper.AsyncResponseComplated += (responseData, ex) =>
                {
                    if (!string.IsNullOrEmpty(responseData.ToString()))
                    {
                        TencentTextResponseData uploadRepData = JsonConvert.DeserializeObject <TencentTextResponseData>(responseData.ToString());
                        if (uploadRepData.ErrCode == "0" && uploadRepData.Msg.Trim().ToLower() == "ok")
                        {
                            //send text with picture success
                            if (AsyncSendPictureComplated != null)
                            {
                                AsyncSendPictureComplated("success", null);
                            }
                        }
                        else
                        {
                            //send text with picture failed
                            if (AsyncSendPictureComplated != null)
                            {
                                AsyncSendPictureComplated("fail", uploadRepData.Msg);
                            }
                        }
                    }
                };
                #endregion
            }
            else if (platformType == PlatformType.Sina)
            {
                #region send text with picture to sina platform
                AccessTokenData  sinaToken        = IsolatedStorageSettings.ApplicationSettings["sinatoken"] as AccessTokenData;
                SinaSocialHelper sinaSocialHelper = new SinaSocialHelper();
                requestUrl = sinaSocialHelper.GetTextContentWithPicUrl(authorizeConfig.OauthApiUrl, sinaToken.AccessToken, content);

                if (sinaSocialHelper.PostArgumentList != null)
                {
                    dataRequestHelper.ExcuteAsyncRequest(requestUrl, Method.POST, sinaSocialHelper.PostArgumentList, uploadFileList);
                }
                else
                {
                    dataRequestHelper.ExcuteAsyncRequest(requestUrl, Method.POST, null, uploadFileList);
                }
                dataRequestHelper.AsyncResponseComplated += (responseData, ex) =>
                {
                    if (!string.IsNullOrEmpty(responseData.ToString()))
                    {
                        SinaTextErrorData    sinaErrorData = JsonConvert.DeserializeObject <SinaTextErrorData>(responseData.ToString());
                        SinaTextResponseData sinaRepData   = JsonConvert.DeserializeObject <SinaTextResponseData>(responseData.ToString());
                        if (sinaErrorData.Error == null && sinaErrorData.Error_Code == null)
                        {
                            //send text with picture success
                            if (AsyncSendPictureComplated != null)
                            {
                                AsyncSendPictureComplated("success", null);
                            }
                        }
                        else
                        {
                            //send text with picture fail
                            if (AsyncSendPictureComplated != null)
                            {
                                AsyncSendPictureComplated("fail", sinaErrorData.Error);
                            }
                        }
                    }
                };
                #endregion
            }
        }
        /// <summary>
        /// Send Pure text content to social platform
        /// </summary>
        /// <param name="platformType">platform type</param>
        /// <param name="content">text content</param>
        public void SendPureTextContent(PlatformType platformType, string content)
        {
            AuthorizeConfig   authorizeConfig   = GetAuthorizeConfig(platformType);
            DataRequestHelper dataRequestHelper = new DataRequestHelper();

            string requestUrl = string.Empty;

            if (platformType == PlatformType.Tencent)
            {
                #region send pure text content to tencent platform
                AccessTokenData     tencentToken        = IsolatedStorageSettings.ApplicationSettings["tencenttoken"] as AccessTokenData;
                TencentSocialHelper tencentSocialHelper = new TencentSocialHelper();
                requestUrl = tencentSocialHelper.GetPureTextContentUrl(authorizeConfig.ApiUrl, authorizeConfig.AppKey, tencentToken.AccessToken, tencentToken.OpenId, content, FormatType.Json);
                if (tencentSocialHelper.PostArgumentList != null)
                {
                    dataRequestHelper.ExcuteAsyncRequest(requestUrl, Method.POST, tencentSocialHelper.PostArgumentList);
                }
                else
                {
                    dataRequestHelper.ExcuteAsyncRequest(requestUrl, Method.POST);
                }

                dataRequestHelper.AsyncResponseComplated += (responseData, ex) => {
                    if (!string.IsNullOrEmpty(responseData.ToString()))
                    {
                        TencentTextResponseData pureRepData = JsonConvert.DeserializeObject <TencentTextResponseData>(responseData.ToString());
                        if (pureRepData.Msg.Trim().ToLower() == "ok" && pureRepData.ErrCode == "0")
                        {
                            //send text content success
                            if (AsyncSendContentComplated != null)
                            {
                                AsyncSendContentComplated("success", null);
                            }
                        }
                        else
                        {
                            //send text content failed
                            if (AsyncSendContentComplated != null)
                            {
                                AsyncSendContentComplated("fail", pureRepData.Msg);
                            }
                        }
                    }
                };
                #endregion
            }
            else if (platformType == PlatformType.Sina)
            {
                #region send pure text content to sina platform
                AccessTokenData  sinaToken        = IsolatedStorageSettings.ApplicationSettings["sinatoken"] as AccessTokenData;
                SinaSocialHelper sinaSocialHelper = new SinaSocialHelper();
                requestUrl = sinaSocialHelper.GetPureTextContentUrl(authorizeConfig.ApiUrl, sinaToken.AccessToken, content);
                if (sinaSocialHelper.PostArgumentList != null)
                {
                    dataRequestHelper.ExcuteAsyncRequest(requestUrl, Method.POST, sinaSocialHelper.PostArgumentList);
                }
                else
                {
                    dataRequestHelper.ExcuteAsyncRequest(requestUrl, Method.POST);
                }

                dataRequestHelper.AsyncResponseComplated += (responseData, ex) => {
                    if (!string.IsNullOrEmpty(responseData.ToString()))
                    {
                        SinaTextErrorData    sinaErrorData    = JsonConvert.DeserializeObject <SinaTextErrorData>(responseData.ToString());
                        SinaTextResponseData sinaResponseData = JsonConvert.DeserializeObject <SinaTextResponseData>(responseData.ToString());
                        if (sinaErrorData.Error == null && sinaErrorData.Error_Code == null)
                        {
                            //send text content success
                            if (AsyncSendContentComplated != null)
                            {
                                AsyncSendContentComplated("success", null);
                            }
                        }
                        else
                        {
                            //send text content failed
                            if (AsyncSendContentComplated != null)
                            {
                                AsyncSendContentComplated("fail", sinaErrorData.Error);
                            }
                        }
                    }
                };
                #endregion
            }
        }
        /// <summary>
        /// Get request access Token by the different platform type
        /// </summary>
        /// <param name="platformType">Social Platform</param>
        /// <param name="grantType">Grant Type</param>
        /// <param name="code">Authorize Code</param>
        public void GetRequestAccessToken(PlatformType platformType, string grantType, string code)
        {
            AuthorizeConfig   oauthConfig       = GetAuthorizeConfig(platformType);
            DataRequestHelper dataReqeustHelper = new DataRequestHelper();

            string requestUrl = string.Empty;

            if (platformType == PlatformType.Tencent)
            {
                #region tencent accesstoken
                TencentSocialHelper tencentSocialHelper = new TencentSocialHelper();
                requestUrl = tencentSocialHelper.GetRequestAccessTokenUrl(oauthConfig.Url, oauthConfig.AppKey, oauthConfig.AppSecret, oauthConfig.RedirectUrl, grantType, code);
                if (tencentSocialHelper.PostArgumentList == null)
                {
                    dataReqeustHelper.ExcuteAsyncRequest(requestUrl, Method.GET);
                }
                else
                {
                    dataReqeustHelper.ExcuteAsyncRequest(requestUrl, Method.GET, tencentSocialHelper.PostArgumentList);
                }

                dataReqeustHelper.AsyncResponseComplated += (content, ex) =>
                {
                    #region get tencent accesstoken and save to local
                    if (!string.IsNullOrEmpty(content.ToString()))
                    {
                        string[]        spileResponseArray = content.ToString().Split(new char[] { '=', '&' });
                        AccessTokenData tencentToken       = new AccessTokenData()
                        {
                            PlatformType = PlatformType.Tencent
                        };
                        for (int count = 0; count < spileResponseArray.Length; count++)
                        {
                            if (spileResponseArray[count] == "access_token")
                            {
                                tencentToken.AccessToken = spileResponseArray[count + 1];
                            }
                            else if (spileResponseArray[count] == "expires_in")
                            {
                                tencentToken.ExpiresIn = Convert.ToInt32(spileResponseArray[count + 1]);
                            }
                            else if (spileResponseArray[count] == "refresh_token")
                            {
                                tencentToken.RefreshToken = spileResponseArray[count + 1];
                            }
                            else if (spileResponseArray[count] == "openid")
                            {
                                tencentToken.OpenId = spileResponseArray[count + 1];
                            }
                        }

                        //save to local
                        tencentToken.CreateDate = DateTime.Now;
                        IsolatedStorageHelper.IsolatedStorageSaveObject("tencenttoken", tencentToken);
                        if (AsyncAuthorizeComplated != null)
                        {
                            AsyncAuthorizeComplated(tencentToken, null);
                        }
                    }
                    #endregion
                };
                #endregion
            }
            else if (platformType == PlatformType.Sina)
            {
                #region sina accesstoken
                SinaSocialHelper sinaSocialHelper = new SinaSocialHelper();
                requestUrl = sinaSocialHelper.GetRequestAccessTokenUrl(oauthConfig.Url, oauthConfig.AppKey, oauthConfig.AppSecret, grantType, code, oauthConfig.RedirectUrl);
                if (sinaSocialHelper.PostArgumentList != null)
                {
                    dataReqeustHelper.ExcuteAsyncRequest(requestUrl, Method.POST, sinaSocialHelper.PostArgumentList);
                }
                else
                {
                    dataReqeustHelper.ExcuteAsyncRequest(requestUrl, Method.POST);
                }

                dataReqeustHelper.AsyncResponseComplated += (content, ex) =>
                {
                    if (!string.IsNullOrEmpty(content.ToString()))
                    {
                        #region spile sina accesstoken data
                        string[]        spiltTokenArray = content.ToString().Split(new char[] { ':', ',', '{', '}' });
                        AccessTokenData sinaTokenData   = new AccessTokenData()
                        {
                            PlatformType = PlatformType.Sina
                        };
                        for (int count = 0; count < spiltTokenArray.Length; count++)
                        {
                            if (spiltTokenArray[count].Contains("access_token"))
                            {
                                sinaTokenData.AccessToken = spiltTokenArray[count + 1].Substring(1, spiltTokenArray[count + 1].Length - 2);
                            }
                            else if (spiltTokenArray[count].Contains("expires_in"))
                            {
                                sinaTokenData.ExpiresIn = Convert.ToInt32(spiltTokenArray[count + 1]);
                            }
                        }

                        //save to local
                        sinaTokenData.CreateDate = DateTime.Now;
                        IsolatedStorageHelper.IsolatedStorageSaveObject("sinatoken", sinaTokenData);
                        if (AsyncAuthorizeComplated != null)
                        {
                            AsyncAuthorizeComplated(sinaTokenData, null);
                        }
                        #endregion
                    }
                };
                #endregion
            }
        }
Example #33
0
 private void OnFacebookAuthenticationFinished(AccessTokenData session)
 {
     // here the authentication succeeded callback will be received.
     // put your login logic here
 }
 private void OnFacebookAuthenticationFinished(AccessTokenData session)
 {
     MessageBox.Show("Facebook authentication succeeded. Expiry date: " + session.Expires);
 }
Example #35
0
 public TrackStream(ConsumerData consumerData,AccessTokenData token,User user,string trackKeyword)
     : base(consumerData,token,user, TwitterUrl.FilterStreamingUrl + "?track=" + Uri.EscapeDataString(trackKeyword))
 {
     this.trackKeyword = trackKeyword;
     GetStreamTrack += async(e) => { };
 }