Пример #1
0
        private IEnumerator _repeatTokenRequest(OnATComplete complete = null, OnATError error = null)
        {
            int timeout = 0;                                                  // Set Timeout

            while (!_isHandled && timeout != settings.auth_timeout * 1000)    // Not Timeout and Not Token
            {
                StartCoroutine(_requestAccessToken((string access_token) => { // Complete Token
                    _isHandled = true;                                        // Handled
                    if (complete != null)
                    {
                        complete(access_token); // Complete Callback
                    }
                }, (BaseErrorModel e) => {      // Error
                    if (settings.debug_mode)
                    {
                        Debug.Log("VK Auth State: " + e.error_msg);
                    }
                }));
                timeout++;                                                // Timeout
                yield return(new WaitForSeconds(settings.auth_interval)); // Set Interval
            }
            if (!_isHandled)
            {
                if (settings.debug_mode)
                {
                    Debug.Log("Таймаут авторизации в приложении VK");
                }
            }
        }
Пример #2
0
        private IEnumerator _requestAccessToken(OnATComplete complete = null, OnATError error = null)
        {
            string _url = _oauth_uri + "code_auth_token?"; // Get Access Token URL

            _url += "device_id=" + _authCode.device_id;    // Set Device ID
            _url += "&client_id=" + application.app_id;    // Set Application ID
            var request = new WWW(_url);                   // Create WWW Request

            yield return(request);                         // Send Request

            // Work with Response
            if (request.error != null)  // Request has error
            {
                BaseErrorModel _err = new BaseErrorModel();
                _err.error_code = 999;
                _err.error_msg  = "Токен не был получен, либо авторизация еще не пройдена. Повторная попытка авторизации...";
                error(_err);
            }
            else                             // No Errors
            {
                if (request.text.Length < 1) // Error
                {
                    BaseErrorModel _err = new BaseErrorModel();
                    _err.error_code = 999;
                    _err.error_msg  = "Сервер передал пустой ответ. Повторная попытка авторизации...";
                }
                else                                                                                         // All Right
                {
                    BaseRequestModel response = JsonUtility.FromJson <BaseRequestModel>(request.text);       // Get Base Model from Response Text
                    if (response.error.error_code == -1)                                                     // Response not has an errors
                    {
                        AuthenticationModel auth = JsonUtility.FromJson <AuthenticationModel>(request.text); // Parse Auth Data
                        if (auth.access_token.Length > 0)                                                    // Has Access Token
                        {
                            authentication = auth;                                                           // Set Authentication Data
                            _isHandled     = true;                                                           // Set Handled

                            // Save Configuration
                            if (application.autosave_data)
                            {
                                SaveSDKConfigs(_auth_data_path, JsonUtility.ToJson(authentication), true);
                            }

                            // Return Done
                            complete(auth.access_token); // Return Token
                        }
                        else                             // Error
                        {
                            BaseErrorModel _err = new BaseErrorModel();
                            _err.error_code = 999;
                            _err.error_msg  = "Сервер передал ответ без токена доступа. Повторная попытка авторизации...";
                            error(_err);
                        }
                    }
                    else     // Reponse has errors
                    {
                        if (error != null)
                        {
                            error(response.error);                // Show Error
                        }
                        if (settings.debug_mode)
                        {
                            Debug.Log("VK SDK Error: " + response.error.error_msg);
                        }
                    }
                }
            }
        }