Skip to content

Instantly share code, notes, and snippets.

Created May 12, 2016 12:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save anonymous/9a44c370b317c9f94087d31cbeddda48 to your computer and use it in GitHub Desktop.
Save anonymous/9a44c370b317c9f94087d31cbeddda48 to your computer and use it in GitHub Desktop.
Param(
[string] $ResourceGroupName = 'YourResourceGroup',
[string] $ResourceLocation = 'Region | eastus | westus | ...',
[string] $ConnectionName = 'SalesforceSandbox',
[string] $subscriptionId = 'xxxxxxxx-xxxx-xxxx-xxxx-9250f1c8ab03',
[bool] $createConnection = $true,
[bool] $isSandbox = $true
)
#region mini window, made by Scripting Guy Blog
Function Show-OAuthWindow {
Add-Type -AssemblyName System.Windows.Forms
$form = New-Object -TypeName System.Windows.Forms.Form -Property @{Width=440;Height=640}
$web = New-Object -TypeName System.Windows.Forms.WebBrowser -Property @{Width=420;Height=600;Url=($url -f ($Scope -join "%20")) }
$DocComp = {
$Global:uri = $web.Url.AbsoluteUri
if ($Global:Uri -match "error=[^&]*|code=[^&]*") {$form.Close() }
}
$web.ScriptErrorsSuppressed = $true
$web.Add_DocumentCompleted($DocComp)
$form.Controls.Add($web)
$form.Add_Shown({$form.Activate()})
$form.ShowDialog() | Out-Null
}
#endregion
Login-AzureRmAccount
#armclient login
#[string]$armclient = armclient token
#$armclient = $armclient.TrimEnd('Token copied to clipboard successfully.') | ConvertFrom-Json
$subscription = Get-AzureRmSubscription -SubscriptionId $subscriptionId
if($createConnection)
{
Write-Host "Creating Conection..."
$customParameters = @{}
if($isSandbox)
{
$customParameters = @{ "token" = @{ "customParameters" = @{ "LoginUri" = @{"option" = "Sandbox"} }}}
}
$connection = New-AzureRmResource -Properties @{"api" = @{"id" = "subscriptions/" + $subscriptionId + "/providers/Microsoft.Web/locations/" + $ResourceLocation + "/managedApis/salesforce"}; "displayName" = $ConnectionName; "customParameterValues" = $customParameters} -ResourceName $ConnectionName -ResourceType "Microsoft.Web/connections" -ResourceGroupName $ResourceGroupName -Location $ResourceLocation -Force
}
else{
$connection = Get-AzureRmResource -ResourceType "Microsoft.Web/connections" -ResourceGroupName $ResourceGroupName -ResourceName $ConnectionName
}
Write-Host "connection status: " $connection.Properties.Statuses[0]
#$objectid = $armclient.oid
$objectid = [guid]::NewGuid()
$parameters = @{
"parameters" = ,@{
"parameterName"= "token";
"redirectUrl"= "https://ema1.exp.azure.com/ema/default/authredirect"
}
}
$parameters.parameters[0].Add("objectId", $objectid)
$parameters.parameters[0].Add("tenantId", $subscription.TenantId)
Write-Host "Getting consent links..."
$consentResponse = Invoke-AzureRmResourceAction -Action "listConsentLinks" -ResourceId $connection.ResourceId -Parameters $parameters -Force
Write-Host "Got consent link - opening window...."
$url = $consentResponse.Value.Link
Show-OAuthWindow -URL $url
$regex = '(code=)(.*)$'
$code = ($uri | Select-string -pattern $regex).Matches[0].Groups[2].Value
Write-output "Received an accessCode: $code"
if (-Not [string]::IsNullOrEmpty($code)) {
$parameters = @{ }
$parameters.Add("code", $code)
$parameters.Add("objectId", $objectid)
$parameters.Add("tenantId", $subscription.TenantId)
# NOTE: errors ignored as this appears to error due to a null response
Invoke-AzureRmResourceAction -Action "confirmConsentCode" -ResourceId $connection.ResourceId -Parameters $parameters -Force -ErrorAction Ignore
}
$connection = Get-AzureRmResource -ResourceType "Microsoft.Web/connections" -ResourceGroupName $ResourceGroupName -ResourceName $ConnectionName
# This should return Status=Connected
Write-Host "connection status: " $connection.Properties.Statuses[0]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment