RestSharp Google的OAuth

时间:2018-09-12 12:52:30

标签: c# google-oauth restsharp

如果我在Google的OAuth服务器上对 grant_type = authorization_code 使用RestSharp,则会收到以下响应:

public class Importer
...
IList<NewDataObj> n_obj = new List<NewDataObj>();    
foreach (var item in data.AsEnumerable().Where(o => o.Field<string>("MyID") == ImportID)){             

         n_obj.Add(new NewDataObj(item, ID, ref currow));//one change
         currow++;}
....

如果我使用Fiddler进行请求,则一切正常,它也可以与其他OAuth服务器一起使用。

RestRequest:

public class NewDataObj{
.....
 public NewDataObj(DataRow item, string newID, ref int currow){ //second changes
  ....
  ID = string.Format("{{ABC_TEST_{0:000}}}", currow);
  AddtoFile_A();

  currow++; //next changes
  ID = string.Format("{{ABC_TEST_{0:000}}}", currow); //new id
  AddtoFile_A2();
 }

如何解决此问题?为什么这样做: { "error": { "code": 400, "message": "Invalid JSON payload received. Unexpected token.\ngrant_type=authoriza\n^", "status": "INVALID_ARGUMENT" } }

1 个答案:

答案 0 :(得分:0)

该字符串应作为单个参数添加

POST https://accounts.google.com/o/oauth2/token
code=4/X9lG6uWd8-MMJPElWggHZRzyFKtp.QubAT_P-GEwePvB8fYmgkJzntDnaiAI&client_id={ClientId}.apps.googleusercontent.com&client_secret={ClientSecret}&redirect_uri=urn:ietf:wg:oauth:2.0:oob&grant_type=authorization_code

有效负载是单个http请求字符串,它不是json格式,但是您返回的响应却是json格式

内容类型应为

application/x-www-form-urlencoded