0

I use DotNetOpenAuth.

So.. I am getting looking good response which has state Authenticated.

That is fine.

Now I want to get user profile info but always getting NULL.

Here is the code.

 private ServiceProviderDescription GetServiceDescription()
        {
            string ValidateTokenEndPoint = ConfigurationManager.AppSettings["identityOAuthValidateTokenEndPointUrl"];
            string ValidateAuthorizationHeaderEndPoint = ConfigurationManager.AppSettings["identityOAuthValidateAuthorizationHeaderEndPointUrl"];
            string AccessTokenEndPoint = ConfigurationManager.AppSettings["identityOAuthAccessTokenURL"];
            bool UseVersion10A = Convert.ToBoolean(ConfigurationManager.AppSettings["identityOAuthUseVersion10a"]);
            string RequestTokenStr = ConfigurationManager.AppSettings["identityOAuthRequestTokenURL"];
            string UserAuthStr = ConfigurationManager.AppSettings["identityOAuthAuthorizeUserURL"];
            string AccessTokenStr = ConfigurationManager.AppSettings["identityOAuthAccessTokenURL"];
            string InvalidateTokenStr = ConfigurationManager.AppSettings["identityOAuthRequestInvalidateTokenURL"];

            return new ServiceProviderDescription
            {
                AccessTokenEndpoint = new MessageReceivingEndpoint(AccessTokenStr, HttpDeliveryMethods.PostRequest),
                RequestTokenEndpoint = new MessageReceivingEndpoint(RequestTokenStr, HttpDeliveryMethods.PostRequest),
                UserAuthorizationEndpoint = new MessageReceivingEndpoint(UserAuthStr, HttpDeliveryMethods.PostRequest),
                TamperProtectionElements = new ITamperProtectionChannelBindingElement[] { new HmacSha1SigningBindingElement() },
                ProtocolVersion = DotNetOpenAuth.OAuth.ProtocolVersion.V10a
            };
        }

void GetUserProfile()
{
    var tokenManager = TokenManagerFactory.GetTokenManager(TokenManagerType.InMemoryTokenManager);
    tokenManager.ConsumerKey = ConfigurationManager.AppSettings["identityOAuthConsumerKey"];
    tokenManager.ConsumerSecret = ConfigurationManager.AppSettings["identityOAuthConsumerSecret"];

var serviceDescription = GetServiceDescription();
var consumer = new WebConsumer(serviceDescription, tokenManager);
var result = consumer.ProcessUserAuthorization(response);

if (result  != null) // It is always null
{

}

Well I checked 10 times and I am pretty sure that all URLs to create ServiceProviderDescription are correct.

Any clue?

4

1 回答 1

0

Well

finally check your web.config app keys

add key="identityOAuthConsumerKey" value="put here correct data!!!"
add key="identityOAuthConsumerSecret" value="put here correct data!!!"

and if you use hosts file you have to put correct sitename as well

127.0.0.1 site1.host1.com

于 2013-10-11T13:49:48.533 回答