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"); } } }
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); } } } } }