oauth - SurveyMonkey returning unexpected EOF error exchanging authorization code for access token -
code had been working in "localhost" environment failing after deploying production under (obviously) new callback url. nothing else changed. request surveymonkey's api exchange authorization code long-lived access token returning error:
system.net.webexception: underlying connection closed: unexpected error occurred on send. ---> system.io.ioexception: received unexpected eof or 0 bytes transport stream.
is there else needs changed, maybe production client_id ? please advise, stuck.
here code:
var clientid = _sds.byname("surveymonkeyclientid").value; var apisecret = _sds.byname("surveymonkeyapisecret").value; var callbackurl = _sds.byname("surveymonkeycallbackurl").value; var accesstokenuri = "https://api.surveymonkey.net/oauth/token?api_key=" + _sds.byname("surveymonkeyapikey").value; // create postback data var postdata = new namevaluecollection() { { "client_secret", apisecret }, { "code", authorizationcode }, { "redirect_uri", callbackurl }, { "client_id", clientid }, { "grant_type", "authorization_code" } }; var querystring = string.join("&", ( key in postdata.allkeys value in postdata.getvalues(key) select string.format("{0}={1}", httputility.urlencode(key), httputility.urlencode(value))).toarray() ); // create , configure web request object var request = webrequest.create(accesstokenuri); request.method = "post"; request.contenttype = "application/x-www-form-urlencoded"; var datastream = request.getrequeststream(); var postarray = encoding.utf8.getbytes(querystring); datastream.write(postarray, 0, postarray.length); datastream.close(); // make call survey monkey's token exchange uri try { var response = request.getresponse(); datastream = response.getresponsestream(); var reader = new streamreader(datastream); var responsefromserver = reader.readtoend(); reader.close(); datastream.close(); response.close(); savesurveymonkeyjsonwhole(responsefromserver); dynamic jobject = _serializer.deserializeobject(responsefromserver); var access_token = jobject["access_token"]; return access_token; } catch (exception ex) { errorsignal.fromcurrentcontext().raise(ex); return string.empty; }
Comments
Post a Comment