te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>c# - Maui app auth via MSAL to get token for SQL connection for Android device - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

c# - Maui app auth via MSAL to get token for SQL connection for Android device - Stack Overflow

programmeradmin4浏览0评论

Hi I am running very similar code to the above in Maui app when trigger a method to call this code, I am prompted in android device to select my loged in corp ad account, then I am asked if I want to continue to use my named app name on same android device it gets triggered when it comes to

using Microsoft.Data.SqlClient;
using Microsoft.Identity.Client;
using System;
using System.Linq;
using System.Threading.Tasks;

public static class AzureSqlService
{
    private static readonly string _clientId = "your-client-id";
    private static readonly string _tenantId = "your-tenant-id";
    private static readonly string _sqlConnectionString = "Server=tcp:your-server.database.windows,1433;Database=your-database;";
    private static readonly string[] _scopes = new[] { "/.default" };

    public static async Task InitializeAsync()
    {
        // Initialize your database here if needed
    }

    public static async Task<SqlConnection> GetSqlConnectionAsync()
    {
        var app = PublicClientApplicationBuilder.Create(_clientId)
            .WithAuthority(new Uri($"/{_tenantId}"))
            .WithRedirectUri($"msal{_clientId}://auth")
            .WithLogging((level, message, containsPii) =>
            {
                System.Diagnostics.Debug.WriteLine($"MSAL: {level} {message} ");
            }, LogLevel.Verbose, enablePiiLogging: false, enableDefaultPlatformLogging: true)
            .Build();

        var accounts = await app.GetAccountsAsync();
        AuthenticationResult result;

        try
        {
            result = await app.AcquireTokenSilent(_scopes, accounts.FirstOrDefault())
                .ExecuteAsync();
        }
        catch (MsalUiRequiredException)
        {
            var currentActivity = PlatformService.GetCurrentActivity();
            try
            {
                result = await app.AcquireTokenInteractive(_scopes)
                    .WithParentActivityOrWindow(() => currentActivity)
                    .ExecuteAsync();
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine($"MSAL Exception: {ex.Message}");
                throw;
            }
        }

        if (result == null)
        {
            System.Diagnostics.Debug.WriteLine("MSAL: Token acquisition failed, result is null.");
            throw new InvalidOperationException("Token acquisition failed.");
        }

        System.Diagnostics.Debug.WriteLine($"MSAL: Token acquired successfully. Access Token: {result.AccessToken}");

        var connection = new SqlConnection(_sqlConnectionString)
        {
            AccessToken = result.AccessToken
        };

        return connection;
    }
}


发布评论

评论列表(0)

  1. 暂无评论