Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xamarin.Forms和Microsoft Graph在iOS设备上不工作_C#_Xamarin_Xamarin.forms_Microsoft Graph Api_Microsoft Graph Sdks - Fatal编程技术网

C# Xamarin.Forms和Microsoft Graph在iOS设备上不工作

C# Xamarin.Forms和Microsoft Graph在iOS设备上不工作,c#,xamarin,xamarin.forms,microsoft-graph-api,microsoft-graph-sdks,C#,Xamarin,Xamarin.forms,Microsoft Graph Api,Microsoft Graph Sdks,我正在使用Xamarin.Forms,并尝试使用下面的MicrosoftGraphAPI 这在iOS模拟器中非常有效,但当我在实际设备上尝试时,我无法登录。当我点击我的WelcomePage.xaml上的登录按钮时,它完全不起任何作用……我缺少什么吗 这是我的登录方法: 公共异步任务登录() { var scopes=OAuthSettings.scopes.Split(“”); //首先,尝试静默登录 //如果用户信息已在应用程序的缓存中, //他们不必再次登录。 string accessT

我正在使用Xamarin.Forms,并尝试使用下面的MicrosoftGraphAPI

这在iOS模拟器中非常有效,但当我在实际设备上尝试时,我无法登录。当我点击我的
WelcomePage.xaml上的登录按钮时,它完全不起任何作用……我缺少什么吗

这是我的
登录方法:

公共异步任务登录()
{
var scopes=OAuthSettings.scopes.Split(“”);
//首先,尝试静默登录
//如果用户信息已在应用程序的缓存中,
//他们不必再次登录。
string accessToken=string.Empty;
尝试
{
var accounts=wait PCA.GetAccountsAsync();
如果(accounts.Count()>0)
{
var silentAuthResult=等待PCA
.AcquireTokenSilent(作用域、帐户.FirstOrDefault())
.ExecuteAsync();
WriteLine(“用户已登录”);
Debug.WriteLine($“访问令牌:{silentAuthResult.AccessToken}”);
accessToken=silentAuthResult.accessToken;
}
}
捕获(MsalUiRequiredException)
{
//当需要交互式登录时,会引发此异常。
WriteLine(“静默令牌请求失败,用户需要登录”);
}
if(string.IsNullOrEmpty(accessToken))
{
//提示用户登录
var interactiveRequest=PCA
.交互式(范围);
如果(AuthUIParent!=null)
{
interactiveRequest=interactiveRequest
.WithParentActivity或Window(AuthUIParent);
}
var authResult=wait interactiveRequest.ExecuteAsync();
WriteLine($“访问令牌:{authResult.AccessToken}”);
}
//初始化图形客户端
GraphClient=新GraphServiceClient(新的DelegateAuthenticationProvider(
异步(请求消息)=>
{
var账户=等待PCA
.GetAccountsAsync();
var结果=等待PCA
.AcquireTokenSilent(作用域、帐户.FirstOrDefault())
.ExecuteAsync();
requestMessage.Headers.Authorization=
新的AuthenticationHeaderValue(“承载者”,result.AccessToken);
}));
等待GetUserInfo();
IsSignedIn=true;
}
它在这条线上停止工作:

    var authResult = await interactiveRequest.ExecuteAsync();
这是我的
权利的来源。plist


iOS 12存在一个已知问题:

微软发布了一份声明,以提供有关iOS12与某些类型的身份验证之间不兼容的信息。不兼容会中断社交、WSFed和OIDC登录。此咨询还提供了关于开发人员可以做些什么来删除ASP.NET添加到其应用程序中的当前安全限制以与iOS12兼容的指导

我怀疑行为差异的原因与设备上的iOS版本和模拟器有关

指向的文档链接包括一些可能的修复:

如果您使用的是ASP.NET Core Identity,则可以通过使用以下代码配置Cookie来禁用保护

services.ConfigureExternalCookie(options =>
{
    // Other options
    options.Cookie.SameSite = SameSiteMode.None;
});
services.ConfigureApplicationCookie(options =>
{
    // Other options
    options.Cookie.SameSite = SameSiteMode.None;
});
services.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options =>
{
    // Other options
    options.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.None;
})
如果您使用的是没有ASP.NET核心标识的cookie身份验证,则可以使用以下代码关闭保护

services.ConfigureExternalCookie(options =>
{
    // Other options
    options.Cookie.SameSite = SameSiteMode.None;
});
services.ConfigureApplicationCookie(options =>
{
    // Other options
    options.Cookie.SameSite = SameSiteMode.None;
});
services.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options =>
{
    // Other options
    options.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.None;
})

我们无法调试看不到的代码。请张贴相关代码。有10.5k代表的人应该已经知道这一点。代码已经发布。您好,您还可以发布您的授权.plist文件的内容吗?您好,我发布了我的授权.plist文件的内容。这是否会崩溃或引发异常?