Google OAuth2: Required parameter is missing: grant_type

后端 未结 2 1857
我寻月下人不归
我寻月下人不归 2020-12-20 21:04

I have tried just about everything, read every StackOverflow post on this issue but I still can\'t get it to work. Interestingly enough, I am able to get 200 OK

相关标签:
2条回答
  • 2020-12-20 21:19

    Check the request Encoding.

    in my case i was sending .json and was .url

    Using Alamofire 3.0

    0 讨论(0)
  • 2020-12-20 21:34

    As @BenFortune has already mentioned, I was sending GET parameters as a POST request. It's amazing such a trivial thing has gone unnoticed after trying to figure it out for over an hour.

    Now, I blame inconsistencies across OAuth providers for this. In the same application I am doing a GET request to Facebook to obtain access_token: https://graph.facebook.com/oauth/access_token. But Google expects a POST request to obtain access_token: https://accounts.google.com/o/oauth2/token

    Correct version:

      var url = 'https://accounts.google.com/o/oauth2/token';
      var payload = {
        grant_type: 'authorization_code',
        code: req.body.code,
        client_id: req.body.clientId,
        client_secret: 'HIDDEN',
        redirect_uri: req.body.redirectUri
      };
    
      request.post(url, { form: payload }, function(error, response, body) {
        console.log(body);
      });
    
    0 讨论(0)
提交回复
热议问题