Created
May 12, 2016 12:08
-
-
Save anonymous/9a44c370b317c9f94087d31cbeddda48 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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