Xamarin 如何整合新的广告B2C和C#Azure移动客户端库?
我已经保护了我的API应用程序,并使用我在此处找到的示例应用程序成功测试了我的ADB2C流:。使用该结构,我可以触发登录过程,然后访问受保护的API调用 不过,我也想使用WindowsAzure.Mobile sdk作为一种方便。这里暗示:您可以从该类中的LoginAsync触发B2C流,但当我以这种方式调用它时,它什么也不做 我还发现(滚动到“使用Active Directory身份验证库对用户进行身份验证”),在那里我用MSAL调用来获取令牌。这会触发登录流,我得到一个好的令牌并声明返回,然后我将其放入一些JSON中并像这样传递: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调用来获取令牌。这会触发登录流,我得到一个好的令牌并声明返回,然
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对我来说是不透明的。所以我想我在这方面的旅行暂时结束了。如果你还有任何想法,我很乐意尝试!