Bu yüzden ASP.NET MVC ve Windows Live Connect API'sine oldukça yeniyim. Temel olarak Canlı girişimi web siteme entegre etmeye çalışıyorum. Kullanıcılar oturum açtığında, Canlılar uygulamamın belirli bilgilerini vermek için izinlerini ister, kullanıcıyı uygulama ayarlarında belirtilen bir yönlendirme uri'ye bir sorgulama listesiyle ekler. Burada, kullanıcı siteye ilk kez giriş yapıyorsa, temel bilgilerimin sunucumda saklanmasını istiyorum (ad, soyadı, e-posta). İlk ve soyadlarını elde edebildim, ancak birincil e-posta adreslerini nasıl alacağımı bulmakta zorlanıyorum. Şimdiye kadar ne yaptığımı açıklayacağım.Bir kullanıcının e-posta adresini almak için ASP.NET'te Live Connect API'sini kullanma
Canlı bağlantıyı bir MVC uygulamasına entegre etmenin en iyi yolunu bulamadım, bu yüzden en iyi tahminde bulundum. Yönlendirme uri'mda, bir HTTP Gönderi oluşturmak için "kod" komutunu alan bir denetleyici eylemi belirledim.
HttpRequest req = System.Web.HttpContext.Current.Request;
string myAuthCode = req.QueryString["code"];
string myAppId = ConfigurationManager.AppSettings.Get("wll_appid");
string mySecret = ConfigurationManager.AppSettings.Get("wll_secret");
string postData = "client_id=" + myAppId + "&redirect_uri=http%3A%2F%2Fmscontestplatformtest.com%2FContestPlatform%2FUser%2FSignIn&client_secret=" + mySecret + "&code=" + myAuthCode + "&grant_type=authorization_code";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
WebRequest request = WebRequest.Create("https://oauth.live.com/token");
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
request.Method = "POST";
JSON biçimli dize yanıtı alın ve access_token ayıklayın. Ardından, aşağıdaki gibi bir HTTP GET çağrısı oluşturmak için bu erişim belirtecini kullanırım.
request = WebRequest.Create("https://apis.live.net/v5.0/me?access_token=" + r.access_token);
response = request.GetResponse();
reader = new StreamReader(response.GetResponseStream());
string userInfo = reader.ReadToEnd();
GET çağrısı yukarıda bu JSON dize ile beni sağlamaktadır:
tüm kamu bilgi ve büyük{
"id": "02b4b930697bbea1",
"name": "Daniel Hines",
"first_name": "Daniel",
"last_name": "Hines",
"link": "http://profile.live.com/cid-02b4b930697bbea1/",
"gender": "male",
"locale": "en_US",
"updated_time": "2011-10-14T21:40:38+0000"
}
, ben birincil adreslerinin dışındaki gereken hemen her şeyi var. Ne tür bir GET çağrısı e-posta almam gerekiyor?
Ayrıca, doğru şekilde mi yapıyorum?
Neden aynı istekte bulunan diğer tüm verileri almak zorunda kaldığınız için e-posta adresini aynı aramada alamıyorsunuz? – cpoDesign
İstediğim şey bu, ama bu aramanın nasıl görüneceğini bilmiyorum. İhtiyacım olan tüm bilgileri almak için yapabileceğim tek bir istek olup olmadığını veya kullanıcının e-posta adresini içeren bilgi için ayrı bir istekte bulunmam gerekip gerekmediğini bilmiyorum. – Danny
Danny, sanki neredeyse orada görünüyorsun: Bu linke bir bakın: http://msdn.microsoft.com/en-us/library/live/hh243646.aspx#wlemails – cpoDesign