asp.net mvc - Google OAuth2: Exchange access code for Refresh and Bearer Tokens in .NET -


i'm building mvc application in user must sign in google provide offline access info. getting access code via javascript view , sending controller. controller making post request google api keep getting bad request 400.

has managed implement ?

        string baseuri = "https://www.googleapis.com/oauth2/v3/token/";         string parcode = string.format("code={0}",code);         string parsecret = "client_secret=******";         string parid = "client_id=*******************";         string parredirect = "redirect_uri=https://localhost:44301";         string postdata = string.format("{0}&{1}&{2}&{3}", parcode, parredirect, parid, parsecret);         uri posturi = new uri(baseuri);         asciiencoding encoding = new asciiencoding ();         byte[] data = encoding.getbytes (postdata);           var  request = (httpwebrequest)webrequest.create(baseuri);         request.method = "post";         request.contenttype = " application/x-www-form-urlencoded";         request.contentlength = postdata.length;         httpwebresponse response;          stream newstream = request.getrequeststream();         newstream.write(data, 0, data.length); 

you're missing grant_type parameter should set authorization_code. should form-encode individual parameter values. latter convenient use namevaluecollection in:

namevaluecollection outgoingquerystring =  httputility.parsequerystring(string.empty); outgoingquerystring.add("code", code); //...etc. other parameters string postdata = outgoingquerystring.tostring(); 

now postdata encoded usage in form post.


Comments