// 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); }
/// <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); }
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; } }
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; }
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) => { }; }
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; }
public TwitterAccount(ConsumerData consumerData, AccessTokenData accessToken, string screenName) { IsActive = false; friendsScreenNameList = new ObservableCollection <string>(); TwitterClient = new TwitterClient(consumerData, accessToken); ScreenName = screenName; }
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) => { }; }
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()); }
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; }
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)); }
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; }
/// <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 }); }
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)); }
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); }
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("/")); } }
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(); }
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; }
/// <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()); }
// 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); }
public TwitterClient(ConsumerData consumerData, AccessTokenData token) : base(consumerData, token) { }
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 } }
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); }
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) => { }; }