Sign up ×
Salesforce Stack Exchange is a question and answer site for Salesforce administrators, implementation experts, developers and anybody in-between. It's 100% free, no registration required.

As part of my OAuth2 flow, I need to determine the login URL for the current session from my Apex class.

In order to "Redirect User to Obtain Access Authorization", I have to know whether I should be using or (for a sandbox).

I thought I would be able to find some system method or configuration value to easily determine the URL, but have come up empty after searching Google, Stack Overflow and this site.

Is this possible? If so, how?

share|improve this question

2 Answers 2

up vote 3 down vote accepted

Here's a link to a blog post on how to determine if you are in a Sandbox or not: It takes into consideration custom domains and a few other special circumstances.

Here's the code he posted.

public class whereAmI{

    // First method will give us the edition as a string 

    public Static String getEdition(){

        // Organization object FTW!
        Organization[] org = new Organization[]{};
        org = [select Id, OrganizationType from Organization limit 1];

        // Check to make sure we have a result
            return org[0].OrganizationType;
            return '[still lost...]';

    // Next method tells us if we're in a sandbox

    public Static Boolean isSandbox(){

        String host = URL.getSalesforceBaseUrl().getHost();
        String server = host.substring(0,host.indexOf('.'));

        // It's easiest to check for 'my domain' sandboxes first 
        // even though that will be rare
            return true;

        // tapp0 is a unique "non-cs" server so we check it now
        if(server == 'tapp0')
            return true;

        // If server is 'cs' followed by a number it's a sandbox
                catch(exception e){
                    //started with cs, but not followed by a number
                    return false;

                //cs followed by a number, that's a hit
                return true;

        // If we made it here it's a production box
        return false;
share|improve this answer

You could use the System URL methods to get the current host:


If the result starts with 'cs' then you know you're looking at a Sandbox and will need to use, otherwise use

This isn't particularly pretty, but it will work.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.