首先是一些快速信息:
这样做的方式是azure会向用户显示一个webview(至少我怀疑它是一个webview),他或她可以选择他/她的首选登录方式
一切正常,用户点击"登录",ADAL从后端加载身份提供者(facebook,g +,...),当你选择一个时,你得到了预期的标志 - 来自相应提供商的屏幕。
问题在于,当用户实际使用其社交帐户登录时,应用程序会突然返回到主屏幕。 如果我然后检查日志我看到这个错误:
"Not allowed to load local resource: file:///android_asset/webkit/android-weberror.png", source: data:text/html,chromewebdata (12)
我知道这是一个安全功能,并且可以解决这个问题,但由于所有内容都是在ADAL中生成的,因为我无法访问库的源代码来更改webview设置I&#39 ;我必须以其他方式做到这一点。 而且据我所知,我无法改变铬的全局设置,所以我有点卡住了。
还有其他人有这个问题吗?或者,更好的是,知道一个解决方法? 也许我可以使用替代铬? (尽管我不确定这是如何工作的,因为我无法编辑ADAL的内部工作,但它似乎不是开源的)
用于生成所有这些的代码非常简单(大多数是自动化的或在ADAL中完成):
public async Task<AuthenticationResult> Login(IPlatformParameters parameters, bool isSignIn)
{
var authContext = new AuthenticationContext(AUTHORITY_URL, new TokenCache());
if (CORRELATION_ID != null &&
CORRELATION_ID.Trim().Length != 0)
{
authContext.CorrelationId = Guid.Parse(CORRELATION_ID);
}
String policy = "";
if (isSignIn)
policy = EMAIL_SIGNIN_POLICY;
else
policy = EMAIL_SIGNUP_POLICY;
return await authContext.AcquireTokenAsync(SCOPES, ADDITIONAL_SCOPES, CLIENT_ID, new Uri(REDIRECT_URL), parameters, UserIdentifier.AnyUser, EXTRA_QP, policy);
}
}
编辑:在较旧版本的android(api 15)上测试它,它确实有用,所以它不是代码的逻辑。
答案 0 :(得分:0)
所有版本的ADAL都是开源的。您可以在此处找到此特定版本的来源:
https://github.com/AzureAD/azure-activedirectory-library-for-dotnet/tree/Convergence-v4-RELEASE
答案 1 :(得分:0)
因此,无论什么奇怪的原因,机器人决定它突然凉爽所有这一切。
我不知道为什么,但它现在正在运作。我确定没有改变代码......