コード例 #1
0
ファイル: SocialNetwork.cs プロジェクト: sergey-msu/nfx
 /// <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");
 }
コード例 #2
0
ファイル: Twitter.cs プロジェクト: vlapchenko/nfx
      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);
      }
コード例 #3
0
ファイル: Facebook.cs プロジェクト: vlapchenko/nfx
 protected override void DoRetrieveLongTermTokens(SocialUserInfo userInfo)
 {
   var fbUserInfo = userInfo as FacebookSocialUserInfo;
   fbUserInfo.LongTermAccessToken = getLongTermAccessToken(fbUserInfo.AccessToken);
 }
コード例 #4
0
ファイル: Facebook.cs プロジェクト: vlapchenko/nfx
        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);
        }
コード例 #5
0
ファイル: LinkedIn.cs プロジェクト: vlapchenko/nfx
      protected override void DoPostMessage(string text, SocialUserInfo userInfo)
      {
        if (userInfo.LoginState != SocialLoginState.LoggedIn)
          return;

        LinkedInSocialUserInfo liUserInfo = userInfo as LinkedInSocialUserInfo;

        share(liUserInfo.AccessToken, liUserInfo, text);
      }
コード例 #6
0
ファイル: GooglePlus.cs プロジェクト: PavelTorgashov/nfx
 protected override void DoRetrieveUserInfo(SocialUserInfo userInfo)
 {
   var googleUserInfo = userInfo as GooglePlusSocialUserInfo;
   getUserInfo(googleUserInfo);
 }
コード例 #7
0
ファイル: SocialNetwork.cs プロジェクト: sergey-msu/nfx
 protected abstract void DoRetrieveUserInfo(SocialUserInfo userInfo);
コード例 #8
0
ファイル: Twitter.cs プロジェクト: vlapchenko/nfx
      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);
      }
コード例 #9
0
ファイル: SocialNetwork.cs プロジェクト: sergey-msu/nfx
 protected abstract void DoObtainTokens(SocialUserInfo userInfo, JSONDataMap request, string returnURL);
コード例 #10
0
ファイル: SocialNetwork.cs プロジェクト: sergey-msu/nfx
 protected abstract void DoRetrieveLongTermTokens(SocialUserInfo userInfo);
コード例 #11
0
ファイル: SocialNetwork.cs プロジェクト: sergey-msu/nfx
        /// <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);
        }
コード例 #12
0
ファイル: SocialNetwork.cs プロジェクト: sergey-msu/nfx
        /// <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);
        }
コード例 #13
0
ファイル: SocialNetwork.cs プロジェクト: sergey-msu/nfx
        /// <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);
          }
        }
コード例 #14
0
ファイル: Twitter.cs プロジェクト: vlapchenko/nfx
 protected override void DoObtainTokens(SocialUserInfo userInfo, JSONDataMap request, string returnURL)
 {
   var twitterUserInfo = userInfo as TwitterSocialUserInfo;
   twitterUserInfo.OAuthVerifier = extractVerifier(request);
   getOAuthAccessToken( twitterUserInfo);
 }
コード例 #15
0
ファイル: SocialNetwork.cs プロジェクト: sergey-msu/nfx
        /// <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);
        }
コード例 #16
0
ファイル: Twitter.cs プロジェクト: vlapchenko/nfx
 protected override void DoRetrieveUserInfo(SocialUserInfo userInfo)
 {
   var twitterUserInfo = userInfo as TwitterSocialUserInfo;
   fillShowUserInfo(twitterUserInfo);
   twitterUserInfo.LoginState = SocialLoginState.LoggedIn;
 }
コード例 #17
0
ファイル: SocialNetwork.cs プロジェクト: sergey-msu/nfx
 /// <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));
 }
コード例 #18
0
ファイル: LinkedIn.cs プロジェクト: vlapchenko/nfx
 protected override void DoRetrieveUserInfo(SocialUserInfo userInfo)
 {
   var liUserInfo = userInfo as LinkedInSocialUserInfo;
   getUserInfo(liUserInfo);
 }
コード例 #19
0
ファイル: SocialNetwork.cs プロジェクト: sergey-msu/nfx
        /// <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;
          }
        }
コード例 #20
0
ファイル: GooglePlus.cs プロジェクト: PavelTorgashov/nfx
 protected override void DoRetrieveLongTermTokens(SocialUserInfo userInfo) {}
コード例 #21
0
ファイル: SocialNetwork.cs プロジェクト: sergey-msu/nfx
 protected virtual void DoPostMessage(string text, SocialUserInfo userInfo) {}
コード例 #22
0
ファイル: Facebook.cs プロジェクト: vlapchenko/nfx
        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);
        }
コード例 #23
0
ファイル: VKontakte.cs プロジェクト: itadapter/nfx
        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();
        }
コード例 #24
0
ファイル: Facebook.cs プロジェクト: vlapchenko/nfx
 protected override void DoRetrieveUserInfo(SocialUserInfo userInfo)
 {
   var fbUserInfo = userInfo as FacebookSocialUserInfo;
   fillUserInfo(fbUserInfo);
 }
コード例 #25
0
ファイル: VKontakte.cs プロジェクト: itadapter/nfx
 protected override void DoRetrieveUserInfo(SocialUserInfo userInfo)
 {
     var vkUserInfo = userInfo as VKontakteSocialUserInfo;
     getUserInfo(vkUserInfo);
 }
コード例 #26
0
ファイル: SocialSerialization.cs プロジェクト: vlapchenko/nfx
 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());
 }
コード例 #27
0
ファイル: AccountController.cs プロジェクト: GMAIL123/Go2uni
        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));
        }