[Javalist] Login with IWiW (OpenSocial 0.9)

aszomor at szomor.hu aszomor at szomor.hu
2012. Jan. 25., Sze, 14:44:02 CET


Hali,

Sikerült a "belépés a iWiW kapuval" a DotNetOpenAuth használatával a  
homokozóba (a Twitter-ből kiindulva), most szeretném lekérdezni a  
"people/me/@self"-et mi belépési pontja, esetleg tudja valaki ?

Köszönöm,
Szomor Attila.

namespace DotNetOpenAuth.ApplicationBlock {
	using System;
	using System.Collections.Generic;
	using System.Configuration;
	using System.Globalization;
	using System.IO;
	using System.Net;
	using System.Web;
	using System.Xml;
	using System.Xml.Linq;
	using System.Xml.XPath;
	using DotNetOpenAuth.Messaging;
	using DotNetOpenAuth.OAuth;
	using DotNetOpenAuth.OAuth.ChannelElements;

	/// <summary>
	/// A consumer capable of communicating with IWiW.
	/// </summary>
	public static class IWiWConsumer {
		/// <summary>
		/// The description of IWiW's OAuth protocol URIs for use with their  
"Sign in with IWiW" feature.
		/// </summary>
		public static readonly ServiceProviderDescription  
SignInWithIWiWServiceDescription = new ServiceProviderDescription {
			RequestTokenEndpoint = new  
MessageReceivingEndpoint("http://api.sandbox.iwiw.hu/social/oauth/requestToken", HttpDeliveryMethods.GetRequest |  
HttpDeliveryMethods.AuthorizationHeaderRequest),
			UserAuthorizationEndpoint = new  
MessageReceivingEndpoint("http://sandbox.iwiw.hu/pages/auth/authorize.jsp",  
HttpDeliveryMethods.GetRequest |  
HttpDeliveryMethods.AuthorizationHeaderRequest),
			AccessTokenEndpoint = new  
MessageReceivingEndpoint("http://api.sandbox.iwiw.hu/social/oauth/accessToken", HttpDeliveryMethods.GetRequest |  
HttpDeliveryMethods.AuthorizationHeaderRequest),
			TamperProtectionElements = new  
ITamperProtectionChannelBindingElement[] { new  
HmacSha1SigningBindingElement() },
		};

		/// <summary>
		/// Initializes static members of the <see cref="IWiWConsumer"/> class.
		/// </summary>
		static IWiWConsumer() {
		}

		/// <summary>
		/// The URI to get the data on the user's home page.
		/// </summary>
		private static readonly MessageReceivingEndpoint IWiWMeEndpoint =  
new  
MessageReceivingEndpoint("http://api.sandbox.iwiw.hu/social/rest/people/me/@self", HttpDeliveryMethods.GetRequest |  
HttpDeliveryMethods.AuthorizationHeaderRequest);

		public static XDocument IWiWMe(ConsumerBase IWiW, string accessToken) {
			IncomingWebResponse response =  
IWiW.PrepareAuthorizedRequestAndSend(IWiWMeEndpoint, accessToken);
			return XDocument.Load(XmlReader.Create(response.GetResponseReader()));
		}
	}
}


namespace Mvc.Client.Library
{
     public class AccountController : BaseInputController
     {
         public ActionResult OAuth(string providerName, string returnUrl)
         {
             if (!String.IsNullOrEmpty(providerName))
             {
                 switch  
(EnumTool.GetEnumByName<CommunalType>(providerName, CommunalType.None))
                 {
                     case CommunalType.IWiW:
                         //check for ReturnUrl, which we should have  
if we use forms
                         //authentication and [Authorise] on our controllers
                         if (String.IsNullOrEmpty(returnUrl))
                             Session["OpenAuthReturnUrl"] = returnUrl;
                         Session["OpenAuthServiceProvider"] = providerName;
                         var iwiw = new  
WebConsumer(IWiWConsumer.SignInWithIWiWServiceDescription,  
IWiWTokenManager);
                         string iwiwUrl = RB.MVC.Const.BaseAddress +  
"Account/OAuthCallback"; //Request.Url.ToString().Replace("OAuth",  
"OAuthCallback");
                         var iwiwCallBackUrl = new Uri(iwiwUrl);
                          
iwiw.Channel.Send(iwiw.PrepareRequestUserAuthorization(iwiwCallBackUrl, null,  
null));
                         break;
                 }
             }
             return RedirectToHome();
         }

         public ActionResult OAuthCallback()
         {
             string providerName =  
Session["OpenAuthServiceProvider"].ToString();
             if (!String.IsNullOrEmpty(providerName))
             {
                 Session.Remove("OpenAuthServiceProvider");
                 bool authorized = false;
                 string userId = null;
                 string screenName = null;
                 string fullName = null;
                 switch  
(EnumTool.GetEnumByName<CommunalType>(providerName, CommunalType.None))
                 {
                     case CommunalType.IWiW:
                         var iwiw = new  
WebConsumer(IWiWConsumer.SignInWithIWiWServiceDescription,  
IWiWTokenManager);
                         var iwiwAccessTokenResponse =  
iwiw.ProcessUserAuthorization();
                         if (iwiwAccessTokenResponse != null)
                         {
                             userId =  
iwiwAccessTokenResponse.ExtraData["user_id"];
                             screenName = "IWiW teszt";
                             fullName =  
iwiwAccessTokenResponse.ExtraData["screen_name"];
                             authorized = true;
                         }
                         LoggerHelper.Error("OAuth: No access token  
response!");
                         break;
                 }
                 if (authorized && !String.IsNullOrEmpty(userId) &&  
!String.IsNullOrEmpty(screenName) && !String.IsNullOrEmpty(fullName))
                 {
                     return OpenAuthSocialLoginUser(providerName,  
userId, screenName, fullName);
                 }
             }
             return RedirectToHome();
         }

         static private InMemoryTokenManager iWiWTokenManager = null;
         static private InMemoryTokenManager IWiWTokenManager
         {
             get
             {
                 if (iWiWTokenManager == null)
                 {
                     string iWiWConsumerKey = null;
                     string iWiWConsumerSecret = null;
                     IClientConfigManager clientConfigManager =  
Container.Resolve<IClientConfigManager>();
                     if (clientConfigManager.Config != null &&
                         
clientConfigManager.Config.IsDotNetOpenAuthServiceProvidersActive())
                     {
                         ServiceProvidersServiceProvider iWiWCfg =  
clientConfigManager.Config.GetDotNetOpenAuthServiceProviderByType(CommunalType.IWiW);
                         if (iWiWCfg != null)
                         {
                             iWiWConsumerKey = iWiWCfg.ConsumerKey;
                             iWiWConsumerSecret = iWiWCfg.ConsumerSecret;
                         }
                     }
                     iWiWTokenManager = new  
InMemoryTokenManager(iWiWConsumerKey, iWiWConsumerSecret);
                 }
                 return iWiWTokenManager;
             }
         }
     }
}



További információk a(z) Javalist levelezőlistáról