Openid 如何在DotNetOpenAuth属性交换中使用FavoriteFlavor属性

Openid 如何在DotNetOpenAuth属性交换中使用FavoriteFlavor属性,openid,dotnetopenauth,custom-attributes,Openid,Dotnetopenauth,Custom Attributes,演示如何将属性交换与DotNetOpenAuth一起使用 但是,如果我有自己的封闭提供者,并且希望使用自定义属性,例如AcmeRequest中定义的favoritefravor属性作为DNOA示例的一部分,该怎么办;我必须如何处理DNOA才能使请求看起来像(但对于我的FavoriteFlavor请求): 正如中所定义的:我不确定您在构建自己的OpenID提供程序时是否需要使OpenID请求与此完全相同 您只需要使用Fetch和Store(如果您希望允许保存数据)请求和响应,这非常简单 IAuth

演示如何将属性交换与DotNetOpenAuth一起使用

但是,如果我有自己的封闭提供者,并且希望使用自定义属性,例如
AcmeRequest
中定义的
favoritefravor
属性作为DNOA示例的一部分,该怎么办;我必须如何处理DNOA才能使请求看起来像(但对于我的FavoriteFlavor请求):


正如中所定义的:

我不确定您在构建自己的OpenID提供程序时是否需要使OpenID请求与此完全相同

您只需要使用Fetch和Store(如果您希望允许保存数据)请求和响应,这非常简单

IAuthenticationRequest request)

var ax = new FetchRequest();
ax.Attributes.AddRequired("http://axschema.org/contact/email");
ax.Attributes.AddRequired("http://axschema.org/namePerson");

request.AddExtension(ax);
在OpendID提供程序上,您必须捕获此请求并创建FetchResponse

var fetchRequest = pendingRequest.GetExtension<FetchRequest>();

var fetchResponse = new FetchResponse();
fetchResponse.Attributes.Add("http://axschema.org/contact/email", "some@email.com");
fetchResponse.Attributes.Add("http://axschema.org/namePerson", "John");

pendingRequest.AddResponseExtension(fetchResponse);
var fetchRequest=pendingRequest.GetExtension();
var fetchResponse=新的fetchResponse();
fetchResponse.Attributes.Add(“http://axschema.org/contact/email", "some@email.com");
fetchResponse.Attributes.Add(“http://axschema.org/namePerson“,”约翰“);
pendingRequest.AddResponseExtension(fetchResponse);

请记住,这些只是属性交换扩展所需的额外步骤。

谢谢Robert,这非常有帮助,让我更接近我想要实现的目标。我还有更进一步的想法,希望安德鲁能继续。再次感谢。也很有帮助。我看到你的问题得到了回答。但是为了帮助其他人澄清,acmereRequest类是一个示例自定义OpenID扩展,而您在这里寻找的是AX中的一个自定义属性。在AX中使用自定义属性要比编写自己的OpenID扩展容易得多。
var fetchRequest = pendingRequest.GetExtension<FetchRequest>();

var fetchResponse = new FetchResponse();
fetchResponse.Attributes.Add("http://axschema.org/contact/email", "some@email.com");
fetchResponse.Attributes.Add("http://axschema.org/namePerson", "John");

pendingRequest.AddResponseExtension(fetchResponse);