Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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
Xamarin 如何整合新的广告B2C和C#Azure移动客户端库?_Xamarin_Azure Web App Service_Azure Mobile Services_Azure Api Apps_Azure Ad B2c - Fatal编程技术网

Xamarin 如何整合新的广告B2C和C#Azure移动客户端库?

Xamarin 如何整合新的广告B2C和C#Azure移动客户端库?,xamarin,azure-web-app-service,azure-mobile-services,azure-api-apps,azure-ad-b2c,Xamarin,Azure Web App Service,Azure Mobile Services,Azure Api Apps,Azure Ad B2c,我已经保护了我的API应用程序,并使用我在此处找到的示例应用程序成功测试了我的ADB2C流:。使用该结构,我可以触发登录过程,然后访问受保护的API调用 不过,我也想使用WindowsAzure.Mobile sdk作为一种方便。这里暗示:您可以从该类中的LoginAsync触发B2C流,但当我以这种方式调用它时,它什么也不做 我还发现(滚动到“使用Active Directory身份验证库对用户进行身份验证”),在那里我用MSAL调用来获取令牌。这会触发登录流,我得到一个好的令牌并声明返回,然

我已经保护了我的API应用程序,并使用我在此处找到的示例应用程序成功测试了我的ADB2C流:。使用该结构,我可以触发登录过程,然后访问受保护的API调用

不过,我也想使用WindowsAzure.Mobile sdk作为一种方便。这里暗示:您可以从该类中的LoginAsync触发B2C流,但当我以这种方式调用它时,它什么也不做

我还发现(滚动到“使用Active Directory身份验证库对用户进行身份验证”),在那里我用MSAL调用来获取令牌。这会触发登录流,我得到一个好的令牌并声明返回,然后我将其放入一些JSON中并像这样传递:

AuthenticationResult ar = await App.PCApplication.AcquireTokenSilentAsync(App.Scopes, "", App.Authority, App.SignUpSignInpolicy, false);
JObject payload = new JObject();
payload["access_token"] = ar.AccessToken;
user = await App.MobileService.LoginAsync(
MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory, payload);
此对LoginAsync的调用引发

{Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException:您没有查看此目录或页面的权限。
在Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient+d_u18.MoveNext()[0x0022f]中:0
---来自引发异常的上一个位置的堆栈结束跟踪---
(剪报)


它们不是为了一起工作而设计的吗?这些是不同种类的令牌吗?我使用B2C的原因是因为我真的不想知道所有OAUTH的东西:)

在B2C的情况下,您实际上得到的是一个ID令牌而不是访问令牌,我相信
ar.AccessToken
属性将为空。此属性在MSAL的最新版本中也似乎消失了

我怀疑您只需要将有效负载更新为“authenticationToken”,而使用
ar.IdToken


我不确定您是否可以继续在有效负载中使用“access_token”密钥,但可能您可以。如果不能,请尝试“authenticationToken”相反。

您是否能够共享不起作用的LoginAsync调用?当您说它不起作用时,网络视图是否出现?因此,调用的MSAL版本会弹出网络视图,并且该部分工作正常。对LoginAsync的调用与上面的示例代码相同。但对LoginAsync的调用从未显示它刚刚返回的任何内容静默或崩溃。
JObject负载=新的JObject();负载[“authenticationToken”]=ar.IdToken;var user=wait mc.LoginAsync(MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory,负载);
Hi Matt,感谢您的帮助。我尝试将“authenticationToken”和“authenticationToken”与ar.IdToken一起使用(与ar.Token的值相同)并且在Azure客户端库的内部产生JSON解析异常:Microsoft.WindowsAzure.MobileServices.MobileServiceAuthentication+d_u25.MoveNext()[0x0007b]in:0对我来说是不透明的。所以我想我在这方面的旅行暂时结束了。如果你还有任何想法,我很乐意尝试!