/// <summary> /// Returns social service login URL for "two-stage" login networks. /// Currently twitter only requires this /// </summary> /// <param name="returnURL">Social site redirects browser here after login</param> /// <param name="userInfo">Context</param> /// <returns>Social site login URL</returns> public virtual string GetSpecifiedExternalLoginReference(SocialUserInfo userInfo, string returnURL) { throw new NFXException(StringConsts.OPERATION_NOT_SUPPORTED_ERROR + GetType().Name + ".GetSpecifiedExternalLoginReference"); }
public override string GetSpecifiedExternalLoginReference(SocialUserInfo userInfo, string returnURL) { TwitterSocialUserInfo twitterUserInfo = userInfo as TwitterSocialUserInfo; string solializedReturnURL = PrepareReturnURLParameter(returnURL, false); getOAuthRequestToken(solializedReturnURL, twitterUserInfo); return TWITTER_LOGIN_URL_PATTERN.Args(twitterUserInfo.OAuthRequestToken); }
protected override void DoRetrieveLongTermTokens(SocialUserInfo userInfo) { var fbUserInfo = userInfo as FacebookSocialUserInfo; fbUserInfo.LongTermAccessToken = getLongTermAccessToken(fbUserInfo.AccessToken); }
protected override void DoPostMessage(string text, SocialUserInfo userInfo) { if (userInfo.LoginState != SocialLoginState.LoggedIn) return; FacebookSocialUserInfo fbUserInfo = userInfo as FacebookSocialUserInfo; publish( fbUserInfo.ID, fbUserInfo.AccessToken, text); }
protected override void DoPostMessage(string text, SocialUserInfo userInfo) { if (userInfo.LoginState != SocialLoginState.LoggedIn) return; LinkedInSocialUserInfo liUserInfo = userInfo as LinkedInSocialUserInfo; share(liUserInfo.AccessToken, liUserInfo, text); }
protected override void DoRetrieveUserInfo(SocialUserInfo userInfo) { var googleUserInfo = userInfo as GooglePlusSocialUserInfo; getUserInfo(googleUserInfo); }
protected abstract void DoRetrieveUserInfo(SocialUserInfo userInfo);
protected override void DoPostMessage(string text, SocialUserInfo userInfo) { if (userInfo.LoginState != SocialLoginState.LoggedIn) return; TwitterSocialUserInfo twitterUserInfo = userInfo as TwitterSocialUserInfo; twit(twitterUserInfo.OAuthAccessToken, twitterUserInfo.OAuthAccessTokenSecret, text); }
protected abstract void DoObtainTokens(SocialUserInfo userInfo, JSONDataMap request, string returnURL);
protected abstract void DoRetrieveLongTermTokens(SocialUserInfo userInfo);
/// <summary> /// Retrieves all user fields (e.g. screen name, email) but tokens. /// </summary> public void RetrieveUserInfo(SocialUserInfo userInfo) { if (userInfo.LoginState != SocialLoginState.LongTermTokenObtained) throw new NFXException(SocialStringConsts.INVALID_STATE_ERROR.Args(SocialLoginState.LongTermTokenObtained, userInfo.LoginState) + GetType().Name + ".RetrieveUserInfo"); DoRetrieveUserInfo(userInfo); }
/// <summary> /// Refreshes long term tokens (if provider needs them). /// Should be used in scenario like background server-side token renew routine /// </summary> public void RenewLongTermTokens(SocialUserInfo userInfo) { if (userInfo.LoginState != SocialLoginState.TokenObtained) throw new NFXException(SocialStringConsts.INVALID_STATE_ERROR.Args(SocialLoginState.TokenObtained, userInfo.LoginState) + GetType().Name + ".RenewLongTermTokens"); DoRetrieveLongTermTokens(userInfo); if (m_InstrumentationEnabled) Interlocked.Increment(ref m_stat_RenewLongTermToken); }
/// <summary> /// Fills user info with values from social network /// </summary> /// <param name="userInfo">Context user info</param> /// <param name="request">Context http request</param> /// <param name="returnURL">Social network login URL (sometimes needed by social site just to ensure correct call)</param> public void ObtainTokensAndFillInfo(SocialUserInfo userInfo, JSONDataMap request, string returnURL) { try { if (userInfo.LoginState != SocialLoginState.NotLoggedIn) throw new NFXException(SocialStringConsts.INVALID_STATE_ERROR.Args(SocialLoginState.NotLoggedIn, userInfo.LoginState) + GetType().Name + ".ObtainTokensAndFillInfo"); DoObtainTokens(userInfo, request, returnURL); userInfo.LastError = null; userInfo.LoginState = SocialLoginState.TokenObtained; DoRetrieveLongTermTokens(userInfo); userInfo.LoginState = SocialLoginState.LongTermTokenObtained; DoRetrieveUserInfo(userInfo); userInfo.LoginState = SocialLoginState.LoggedIn; if (m_InstrumentationEnabled) Interlocked.Increment(ref m_stat_Login); } catch (Exception ex) { userInfo.LastError = ex; if (m_InstrumentationEnabled) Interlocked.Increment(ref m_stat_LoginErr); } }
protected override void DoObtainTokens(SocialUserInfo userInfo, JSONDataMap request, string returnURL) { var twitterUserInfo = userInfo as TwitterSocialUserInfo; twitterUserInfo.OAuthVerifier = extractVerifier(request); getOAuthAccessToken( twitterUserInfo); }
/// <summary> /// Returns user profile image data along with content type or null if no image available. /// Picture kind specifies classification of pictures within profile i.e. "main", "small-icon" etc. /// </summary> public virtual byte[] GetPictureData(SocialUserInfo userInfo, out string contentType, string pictureKind = null) { contentType = string.Empty; if (userInfo.PictureLink.IsNullOrWhiteSpace()) return null; return WebClient.GetData(new Uri(userInfo.PictureLink), this, out contentType); }
protected override void DoRetrieveUserInfo(SocialUserInfo userInfo) { var twitterUserInfo = userInfo as TwitterSocialUserInfo; fillShowUserInfo(twitterUserInfo); twitterUserInfo.LoginState = SocialLoginState.LoggedIn; }
/// <summary> /// Returns user profile image or null if no image available. /// Picture kind specifies classification of pictures within profile i.e. "main", "small-icon" etc. /// </summary> public System.Drawing.Image GetPicture(SocialUserInfo userInfo, out string contentType, string pictureKind = null) { var data = GetPictureData(userInfo, out contentType, pictureKind); if (data == null) return null; return System.Drawing.Image.FromStream(new System.IO.MemoryStream(data)); }
protected override void DoRetrieveUserInfo(SocialUserInfo userInfo) { var liUserInfo = userInfo as LinkedInSocialUserInfo; getUserInfo(liUserInfo); }
/// <summary> /// Post message to social network /// </summary> /// <param name="userInfo">Context social user info</param> /// <param name="text">Message to send</param> public void PostMessage(SocialUserInfo userInfo, string text) { try { DoPostMessage(text, userInfo); userInfo.LastError = null; if (m_InstrumentationEnabled) Interlocked.Increment(ref m_stat_PostMessage); } catch (System.Net.WebException ex) { String responseString; using (System.IO.Stream stream = ex.Response.GetResponseStream()) { System.IO.StreamReader reader = new System.IO.StreamReader(stream, Encoding.UTF8); responseString = reader.ReadToEnd(); } userInfo.LastError = new NFXException("{0}\r\n{1}".Args(ex.Message, responseString)); } catch (Exception ex) { userInfo.LastError = ex; } }
protected override void DoRetrieveLongTermTokens(SocialUserInfo userInfo) {}
protected virtual void DoPostMessage(string text, SocialUserInfo userInfo) {}
protected override void DoObtainTokens(SocialUserInfo userInfo, JSONDataMap request, string returnPageURL) { var code = request[ACCESSTOKEN_CODE_PARAMNAME].AsString(); if (code.IsNullOrWhiteSpace()) throw new NFXException( StringConsts.ARGUMENT_ERROR + GetType().Name + ".GetUserInfo(request should contain code)"); FacebookSocialUserInfo fbUserInfo = userInfo as FacebookSocialUserInfo; string returnURL = PrepareReturnURLParameter(returnPageURL); fbUserInfo.AccessToken = getAccessToken( code, returnURL); }
protected override void DoObtainTokens(SocialUserInfo userInfo, JSONDataMap request, string returnPageURL) { var code = request[ACCESSTOKEN_CODE_PARAMNAME].AsString(); if (code.IsNullOrWhiteSpace()) throw new NFXException( StringConsts.ARGUMENT_ERROR + GetType().Name + ".GetUserInfo(request should contain code)"); VKontakteSocialUserInfo vkUserInfo = userInfo as VKontakteSocialUserInfo; string returnURL = PrepareReturnURLParameter(returnPageURL); dynamic accessTokenObj = getAccessTokenObj( code, returnURL); vkUserInfo.AccessToken = accessTokenObj[ACCESSTOKEN_PARAMNAME]; vkUserInfo.ID = (accessTokenObj[ACCESSTOKEN_USERID_PARAMNAME]).ToString(); }
protected override void DoRetrieveUserInfo(SocialUserInfo userInfo) { var fbUserInfo = userInfo as FacebookSocialUserInfo; fillUserInfo(fbUserInfo); }
protected override void DoRetrieveUserInfo(SocialUserInfo userInfo) { var vkUserInfo = userInfo as VKontakteSocialUserInfo; getUserInfo(vkUserInfo); }
private void initSocialUserInfo(SocialUserInfo ui) { ui.Email = "*****@*****.**"; ui.FirstName = "Vasya"; ui.LastName = "Pupkin"; ui.MiddleName = "S"; ui.Gender = Gender.MALE; ui.BirthDate = new DateTime(1980, 01, 10); ui.Locale = "en-us"; ui.TimezoneOffset = -120; ui.LongTermProviderToken = "aBX567-mm78Da/Yhj78-iik"; ui.LoginState = SocialLoginState.LongTermTokenObtained; ui.LastError = new NFXException("ex-outer", new NullReferenceException()); }
public JsonResult PatientSocialLogIn(string DeviceToken, SocialUserInfo Info) { ResultInfo <string> ResultInfo = new ResultInfo <string>(); ResultInfo.ErrorCode = 400; ResultInfo.Status = false; ResultInfo.Description = "Patient social login"; ResultInfo.Info = "Login Failed"; Global Glb = new Global(); User_Backend PageObj = new User_Backend(); try { if (Info != null && Info.SocialUserId != "" && Info.SocialUserId != null) { #region CHECK OBJECT IS NULL BY IMAD string CheckedOb = Glb.ObjectNullChecking(Info); Info = JsonConvert.DeserializeObject <SocialUserInfo>(CheckedOb); #endregion ResultInfo.Info = PageObj.UserSocialRegistration(Info); // Function call for database store string[] arr = ResultInfo.Info.Split('!'); if (arr[0] == "Success") { long insertedId = 0; if (arr[1] != "") { insertedId = Convert.ToInt64(arr[1]); } if (ResultInfo.Info.Contains("NewUser")) { string Password = ""; if (arr[3] != "") { Password = arr[3]; } string Token = Glb.GenerateToken(insertedId, Info.Email, Password); if (!string.IsNullOrEmpty(Token)) { Glb.UpdateTokenId(insertedId, Token); ResultInfo.Info = "User Registration successfull."; } else { ResultInfo.Info = "Token is not generated."; } ResultInfo.TokenId = Token; ResultInfo.ErrorCode = 200; ResultInfo.Status = true; ResultInfo.LastModifiedId = insertedId; ResultInfo.Description = "Success! User authenticated"; } else { if (insertedId > 0) { string Token = Glb.GetTokenByID(insertedId); ResultInfo.TokenId = Token; ResultInfo.ErrorCode = 200; ResultInfo.Status = true; ResultInfo.LastModifiedId = insertedId; ResultInfo.Info = "User registration successfull."; } } } } else { ResultInfo.Info = "Details is not provided."; } } catch (Exception ex) { ResultInfo.Info = ex.Message; } return(Json(ResultInfo, JsonRequestBehavior.AllowGet)); }