我目前正致力于使用Azure为Xamarin.Android应用创建自定义身份验证。我已成功创建了API,并且在使用Advanced REST Client提交原始有效负载时正确返回值。
我现在正尝试使用Azure的MobileServiceClient SDK在Xamarin.Android上实现此功能,并且在我的代码中使用如下所示的invokeApi方法时,我收到一个异常,表明它正在调用GET而不是POST。有人知道我可能做错了吗?
ex.Message返回
“无法GET / api / register?username = azureAccountTest& password = testingpassword”
const test = 'apple iphone'
const term = 'iphone 5'
// Split by whitespace
const terms = term.split(/\s/)
// Test all sub term
const result = terms.reduce(function(previousValue, currentValue) {
if (test.search(currentValue) > -1) previousValue.push(currentValue)
return previousValue
}, [])
console.log(result.length > 0)
答案 0 :(得分:0)
根据您的描述,我在本地测试了此问题,我可以按如下方式检索authenticationToken
:
您对InvokeApiAsync
使用了以下方法:
public Task<JToken> InvokeApiAsync(string apiName, HttpMethod method, IDictionary<string, string> parameters, CancellationToken cancellationToken = default(CancellationToken));
注意:它总结了附加数据将通过查询字符串发送。
根据我的理解,您可以参考以下方法通过HTTP内容发送其他数据,如下所示:
JObject user = new JObject();
user.Add("username", "bruce");
user.Add("password", "123456");
var result = await App.MobileService.InvokeApiAsync("/.auth/login/custom", HttpMethod.Post, user, ct);
此外,在部署到azure端时,您需要使用https端点来指定mobileAppUri
。这是一个类似的问题,您可以参考here。此外,我建议你参考adrian hall的关于Custom Authentication的书。
<强>更新强>
根据您的评论,我检查了自定义身份验证,并在adrian hall的书中找到了关于Custom Authentication的以下说明:
您必须在应用服务中启用身份验证/授权。将请求未经过身份验证的操作设置为允许请求(无操作),不配置任何支持的身份验证提供程序。< / p>