1. David Pylatuk
  2. PowerBuilder
  3. Tuesday, 20 February 2024 19:14 PM UTC

Hello everyone, I have created a simple .net dll in SnapDevelop and used 'Tools - > .Net dll importer to import it into a non visual object in PowerBuilder. The c# code is below.

 

The code to call this in PowerBuilder is:

nvo_useraccesstokenutil n_gettoken
String ls_token
n_gettoken = CREATE nvo_useraccesstokenutil

SetNull(ls_token)

 

ls_token = n_gettoken.of_gettokenforapi("05c5c963-c839-4c9e-b5c1-b51b3799ac37", "6a4ae5f6-00f8-4571-ab73-aa9f9d2b1fea", &
"api://6a4ae5f6-00f8-4571-ab73-aa9f9d2b1fea/.default", "d2e65c6d-0f75-4fa1-95c2-379656390fcf", "http://localhost:12345/EAS")

 

When I create a test c# app in snapdevelop it works fine. From PowerBuilder it never gets to:

return "5"; in the code below. Just wondering if anyone has any ideas. Thanks in advance.

 

c# code

 

using Microsoft.Identity.Client;
using System.Diagnostics;

namespace Wcb.Common.PowerServer
{
public class UserAccessTokenUtil
{

public string GetTokenForApi(string tenant, string apiClientId, string apiScope, string appClientId, string redirectUrl)
{
//Console.WriteLine("Hello, World!");
//return "Return value from call";

var scopes = new List<string> { apiScope };

var publicClientApp = PublicClientApplicationBuilder.Create(appClientId).WithRedirectUri(redirectUrl).WithAuthority(AzureCloudInstance.AzurePublic, tenant).Build();
AuthenticationResult result;
var accounts = publicClientApp.GetAccountsAsync().Result;
if (accounts.Any())
{
return "2";
result = publicClientApp.AcquireTokenSilent(scopes, accounts.FirstOrDefault())
.ExecuteAsync().Result;
return "3";
}
else
{
result = publicClientApp.AcquireTokenByIntegratedWindowsAuth(scopes) .ExecuteAsync().Result;
return "5";
}
return $"Parameter values: tenant={tenant}, apiClientId={apiClientId}, apiScope={apiScope}, appClientId={appClientId}, redirectUrl={redirectUrl}";
}
}
}



There are no replies made for this question yet.
However, you are not allowed to reply to this question.
We use cookies which are necessary for the proper functioning of our websites. We also use cookies to analyze our traffic, improve your experience and provide social media features. If you continue to use this site, you consent to our use of cookies.