Irshu
Irshu

Reputation: 8436

Microsoft OAuth does not return refresh_token

33I issued the following request to Microsoft to get the AuthCode,

public ActionResult ConnectMicrosoft()
{
    var ClientId = "xxxxxxxxx";
    // var ClientSecret = "xxxxxxxxxxxxxxx";
    var RedirectUri = "http://www.domain.com:50952/Settings/MicrosoftAuthCallback";
    var MsUrl = String.Format("https://login.live.com/oauth20_authorize.srf?client_id={0}&scope=wl.basic&response_type=code&redirect_uri={1}", ClientId, RedirectUri);
    return Redirect(MsUrl);
}

and this during the callback,

public ActionResult MicrosoftAuthCallback(string code)
{
    string result = null;
    var ClientId = "xxxxxxxxxxxx";
    var ClientSecret = "xxxxxxxxxxxxxxxxxxxxxxx";
    var RedirectUri = "http://www.domain.com:50952/Settings/MicrosoftAuthCallback";
    var FinalUri = String.Format("https://login.live.com/oauth20_token.srf?client_id={0}&client_secret={1}&code={2}&grant_type=authorization_code&redirect_uri={3}", ClientId, ClientSecret, code, RedirectUri);
    HttpWebRequest _Request = HttpWebRequest.Create(FinalUri) as HttpWebRequest;
    _Request.Method = "GET";
    using (WebResponse _Response = _Request.GetResponse())
    {
        var sr = new StreamReader(_Response.GetResponseStream());
        result = sr.ReadToEnd();
        sr.Close();
    }
    var _Serializer = new JavaScriptSerializer();
    var TokenData = _Serializer.Deserialize<MicrosoftToken>(result);
    return View();
}

The callback method successfully returns the access_token, tokentype and expires_in and authentication_token, but refresh token is missing. Could you give me a clue on what i'm doing wrong?

Upvotes: 0

Views: 91

Answers (1)

Irshu
Irshu

Reputation: 8436

huh, forgot to include the scope, wl.offline_access, also request must b POST with ContentType = "application/x-www-form-urlencoded"

Upvotes: 1

Related Questions