示例#1
0
        private bool PerformTokenCheck(VKAccessToken token, bool isUserDefinedToken = false)
        {
            if (token == null)
            {
                return(false);
            }

            if (token.IsExpired)
            {
                AccessTokenExpired(null, new VKAccessTokenExpiredEventArgs {
                    ExpiredToken = token
                });
                return(false);
            }
            if (token.AccessToken != null)
            {
                if (isUserDefinedToken)
                {
                    AccessTokenAccepted(null, new VKAccessTokenAcceptedEventArgs {
                        Token = token
                    });
                }
                return(true);
            }

            var error = new VKError {
                error_code = (int)VKResultCode.InvalidToken
            };

            AccessDenied(null, new VKAccessDeniedEventArgs {
                AuthorizationError = error
            });
            return(false);
        }
示例#2
0
        /// <summary>
        /// Removes active token from memory and IsolatedStorage at default key.
        /// </summary>
        public static void Logout()
        {
            Instance.AccessToken = null;

            VKAccessToken.RemoveTokenInIsolatedStorage(VKSDK_ACCESS_TOKEN_ISOLATEDSTORAGE_KEY);

            VKUtil.ClearCookies();
        }
示例#3
0
        public static bool WakeUpSession()
        {
            var token = VKAccessToken.TokenFromIsolatedStorage(VKSDK_ACCESS_TOKEN_ISOLATEDSTORAGE_KEY);

            if (!Instance.PerformTokenCheck(token))
            {
                return(false);
            }
            Instance.AccessToken = token;
            return(true);
        }
示例#4
0
        /// <summary>
        /// Save API access token in IsolatedStorage with default key.
        /// </summary>
        /// <param name="token">Access token to be used for API requests</param>
        /// <param name="renew">Is token being renewed. Raises different event handlers (AccessTokenReceived or AccessTokenRenewed)</param>
        public static void SetAccessToken(VKAccessToken token, bool renew = false)
        {
            Instance.AccessToken = token;

            if (!renew)
            {
                AccessTokenReceived(null, new VKAccessTokenReceivedEventArgs {
                    NewToken = token
                });
            }
            else
            {
                AccessTokenRenewed(null, new AccessTokenRenewedEventArgs {
                    Token = token
                });
            }

            Instance.AccessToken.SaveTokenToIsolatedStorage(VKSDK_ACCESS_TOKEN_ISOLATEDSTORAGE_KEY);
        }
示例#5
0
        public static bool WakeUpSession()
        {
            bool result = true;

            var token = VKAccessToken.TokenFromIsolatedStorage(VKSDK_ACCESS_TOKEN_ISOLATEDSTORAGE_KEY);

            if (!Instance.PerformTokenCheck(token))
            {
                result = false;
            }
            else
            {
                Instance.AccessToken = token;
            }

            TrackStats();

            return(result);
        }
        /// <summary>
        /// Retreive token from key-value map
        /// </summary>
        /// <param name="args">Dictionary containing token info</param>
        /// <returns>Parsed token</returns>
        public static VKAccessToken TokenFromParameters(Dictionary <String, String> args)
        {
            if (args == null || args.Count == 0)
            {
                return(null);
            }

            try
            {
                var token = new VKAccessToken();
                args.TryGetValue(ACCESS_TOKEN, out token.AccessToken);

                string expiresValue;
                args.TryGetValue(EXPIRES_IN, out expiresValue);
                int.TryParse(expiresValue, out token.ExpiresIn);

                args.TryGetValue(USER_ID, out token.UserId);
                args.TryGetValue(SECRET, out token.Secret);

                if (args.ContainsKey(HTTPS_REQUIRED))
                {
                    token.IsHttpsRequired = args[HTTPS_REQUIRED] == "1";
                }
                else if (token.Secret == null)
                {
                    token.IsHttpsRequired = true;
                }

                if (args.ContainsKey(CREATED))
                {
                    long.TryParse(args[CREATED], out token.Created);
                }
                else
                {
                    token.Created = VKUtil.CurrentTimeMillis();
                }

                return(token);
            }
            catch { }

            return(null);
        }
示例#7
0
        /// <summary>
        /// Check new access token and assign as instance token
        /// </summary>
        /// <param name="tokenParams">Params of token</param>
        /// <param name="isTokenBeingRenewed">Flag indicating token renewal</param>
        /// <returns>Success if token has been assigned or error</returns>
        private static CheckTokenResult CheckAndSetToken(Dictionary <String, String> tokenParams, bool isTokenBeingRenewed)
        {
            var token = VKAccessToken.TokenFromParameters(tokenParams);

            if (token == null || token.AccessToken == null)
            {
                if (tokenParams.ContainsKey(VKAccessToken.SUCCESS))
                {
                    return(CheckTokenResult.Success);
                }

                var error = new VKError {
                    error_code = (int)VKResultCode.UserAuthorizationFailed
                };

                return(CheckTokenResult.Error);
            }
            else
            {
                SetAccessToken(token, isTokenBeingRenewed);
                return(CheckTokenResult.Success);
            }
        }
示例#8
0
 /// <summary>
 /// Initialize SDK with custom token key (e.g. saved from other source or for some test reasons)
 /// </summary>
 /// <param name="appId">Your VK app ID.
 /// If you don't have one, create a standalone app here: https://vk.com/editapp?act=create </param>
 /// <param name="token">Custom-created access token</param>
 public static void Initialize(String appId, VKAccessToken token)
 {
     Initialize(appId);
     Instance.AccessToken = token;
     Instance.PerformTokenCheck(token, true);
 }
        /// <summary>
        /// Retreive token from key-value map
        /// </summary>
        /// <param name="args">Dictionary containing token info</param>
        /// <returns>Parsed token</returns>
        public static VKAccessToken TokenFromParameters(Dictionary<String, String> args)
        {
            if (args == null || args.Count == 0)
                return null;

            try
            {
                var token = new VKAccessToken();
                args.TryGetValue(ACCESS_TOKEN, out token.AccessToken);

                string expiresValue;
                args.TryGetValue(EXPIRES_IN, out expiresValue);
                int.TryParse(expiresValue, out token.ExpiresIn);

                args.TryGetValue(USER_ID, out token.UserId);
                args.TryGetValue(SECRET, out token.Secret);

                if (args.ContainsKey(HTTPS_REQUIRED))
                    token.IsHttpsRequired = args[HTTPS_REQUIRED] == "1";
                else if (token.Secret == null)
                    token.IsHttpsRequired = true;

                if (args.ContainsKey(CREATED))
                    long.TryParse(args[CREATED], out token.Created);
                else
                    token.Created = VKUtil.CurrentTimeMillis();

                return token;
            }
            catch { }

            return null;
        }
示例#10
0
文件: VKSDK.cs 项目: orinichevd/BVk
        private bool PerformTokenCheck(VKAccessToken token, bool isUserDefinedToken = false)
        {
            if (token == null) return false;

            if (token.IsExpired)
            {
                AccessTokenExpired(null, new VKAccessTokenExpiredEventArgs { ExpiredToken = token });
                return false;
            }
            if (token.AccessToken != null)
            {
                if (isUserDefinedToken)
                    AccessTokenAccepted(null, new VKAccessTokenAcceptedEventArgs { Token = token });
                return true;
            }

            var error = new VKError { error_code = (int)VKResultCode.InvalidToken };
            AccessDenied(null, new VKAccessDeniedEventArgs { AuthorizationError = error });
            return false;
        }
示例#11
0
文件: VKSDK.cs 项目: orinichevd/BVk
        /// <summary>
        /// Save API access token in IsolatedStorage with default key.
        /// </summary>
        /// <param name="token">Access token to be used for API requests</param>
        /// <param name="renew">Is token being renewed. Raises different event handlers (AccessTokenReceived or AccessTokenRenewed)</param>
        public static void SetAccessToken(VKAccessToken token, bool renew = false)
        {
            if (Instance.AccessToken == null ||
                (Instance.AccessToken.AccessToken != token.AccessToken ||
                 Instance.AccessToken.ExpiresIn != token.ExpiresIn))
            {
                Instance.AccessToken = token;

                if (!renew)
                    AccessTokenReceived(null, new VKAccessTokenReceivedEventArgs { NewToken = token });
                else
                    AccessTokenRenewed(null, new AccessTokenRenewedEventArgs { Token = token });

                Instance.AccessToken.SaveTokenToIsolatedStorage(VKSDK_ACCESS_TOKEN_ISOLATEDSTORAGE_KEY);
            }
        }
示例#12
0
文件: VKSDK.cs 项目: orinichevd/BVk
 /// <summary>
 /// Initialize SDK with custom token key (e.g. saved from other source or for some test reasons)
 /// </summary>
 /// <param name="appId">Your VK app ID. 
 /// If you don't have one, create a standalone app here: https://vk.com/editapp?act=create </param>
 /// <param name="token">Custom-created access token</param>
 public static void Initialize(String appId, VKAccessToken token)
 {
     Initialize(appId);
     Instance.AccessToken = token;
     Instance.PerformTokenCheck(token, true);
 }