使用Azure AD B2C的错误“ Safari无法打开页面,因为地址无效”

时间:2018-10-31 13:29:24

标签: azure xamarin.forms xamarin.ios azure-ad-b2c

我们在 Xamarin Forms 应用程序中使用了 Azure AD B2C 。我已经在 Android 上运行了该程序,并在 iOS 上运行了该程序。出于某些奇怪的原因,虽然我现在尝试在 iOS 上登录时遇到此错误。

enter image description here

出现登录屏幕,用户输入其用户名和密码,但随后出现错误。查看AD的 Azure 登录,我可以看到 Azure 已成功登录用户。这表明错误是与 Azure 重定向回应用程序有关。

我已经根据此example(尤其是第6步)配置了应用。自从可以使用以来,我没有更改任何登录代码,那么还有什么可能导致它损坏?

2 个答案:

答案 0 :(得分:1)

您可以尝试将此方法添加到AppDelegate.cs

public override bool OpenUrl(UIApplication application, NSUrl url, string sourceApplication, NSObject annotation)
    {
        if (HandleOpenURL(application, url)){
            return true;
        }

        //return base.OpenUrl(application, url, sourceApplication, annotation);
        return false;
    }

答案 1 :(得分:1)

我最终通过参考此article找到了答案。相关部分是iOS部分,描述了更新 info.plist 文件的过程。我以前与 Azure AD B2C 集成的示例文章指出,我应该使用文本编辑器(例如VS Code)来更新此文件。但是,这里的文章指出我应该使用 Visual Studio 更新文件。对这两个文件的比较显示了在 info.plist 中输入的值之间的差异。

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Images</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" media="screen" href="/css/style.css" />

    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
</head>

<body>

    <link href="https://use.fontawesome.com/releases/v5.4.1/css/all.css" rel="stylesheet" />
    <link href="https://fonts.googleapis.com/css?family=Oswald" rel="stylesheet">


    <div id="search-div">
        <input type="text" class="search-bar" id="searchBar">
    </div>
    
    <div class="container">
        <div class="flex-container" id="image-container">
        </div>
    </div>

    <div class="control-bar" id="mediaControlBar">
        <div class="media-controls">
            <div class="prev-btn">
                <i class="fas fa-angle-double-left"></i>
            </div>
            <div class="play-btn">
                <i class="fas fa-play"></i>
            </div>
            <div class="next-btn">
                <i class="fas fa-angle-double-right"></i>
            </div>
        </div>

        <div id="seek-bar">
            <div id="fill"></div>
            <div id="handle"></div>
        </div>
    </div>

    <script src="/js/data.js"></script>
</body>

</html>

这使我登录,但是随后我立即收到以下错误,将我赶出了应用程序。

由于“应用程序传输安全性”策略要求使用安全连接,因此无法加载资源

我已将以下内容添加到info.plist,其中已解决了该错误。

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>My URL scheme</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>msalmyapplicationid-goes-here</string>
        </array>
        <key>CFBundleTypeRole</key>
        <string>None</string>
    </dict>
</array>

所有功能现在都可以使用,用户可以使用iOS登录该应用。