예제 #1
0
        public IEnumerator login(string username, string password)
        {
            // Check for existing connection
            SalesforceConnection connection = ApplicationState.sfConnection;

            if (connection != null)
            {
                sfClient.setConnection(connection);
                Debug.Log("Salesforce connection resumed.");
                yield return(true);
            }
            else             // Establish a new connection
            {
                // Set OAuth settings
                sfClient.consumerKey    = SalesforceAuthConfig.OAUTH_CONSUMER_KEY;
                sfClient.consumerSecret = SalesforceAuthConfig.OAUTH_CONSUMER_SECRET;
                // Attemp login
                bool isUserLogged = false;
                bool shouldRetry  = true;
                while (!isUserLogged && shouldRetry)
                {
                    Coroutine <bool> routine = owner.StartCoroutine <bool>(
                        sfClient.login(username, password)
                        );
                    yield return(routine.coroutine);

                    try
                    {
                        isUserLogged = routine.getValue();
                        Debug.Log("Salesforce login successful.");
                        // Store connection for later use
                        ApplicationState.sfConnection = sfClient.getConnection();
                    }
                    catch (SalesforceConfigurationException e)
                    {
                        throw e;
                    }
                    catch (SalesforceAuthenticationException e)
                    {
                        throw e;
                    }
                    catch (SalesforceApiException)
                    {
                        Debug.Log("Salesforce login failed, retrying...");
                    }
                }
                yield return(isUserLogged);
            }
        }