Google OAuth 2.0服务器到服务器,无法获取令牌

我想从Google Play服务器获取订阅者信息,但我甚至无法通过令牌响应阶段。 我检查了相关的答案,alignment可能的谷歌服务器时间,但我找不到解决scheme。

我还附加了服务器端的javascript下面总是变成响应string; “上传成功!服务器响应:

{“error”:“invalid_grant”,“error_description”:“Bad Request”}“

提前致谢。

 function myFunction() { var googleRequest = require('request'); var googleUrl = "https://www.googleapis.com/oauth2/v3/token"; var private_key = "xxx";//intentionally xxx'ed for security and clarity var s1 = JSON.stringify({"alg":"RS256","typ":"JWT"}); var now = new Date().getTime(); var s2 = JSON.stringify({ "iss":"xxx@developer.gserviceaccount.com", "scope":"https://www.googleapis.com/auth/prediction", "aud":"https://www.googleapis.com/oauth2/v3/token", "exp":now + 3600, "iat":now }); function base64(input) { return new Buffer(input, 'utf8').toString('base64'); } JWT = zumoJwt(s1, s2, private_key); var payload = { grant_type:"assertion", assertion_type:"urn:ietf:params:oauth:grant-type:jwt-bearer", assertion:JWT } var r = googleRequest.post( googleUrl, { form: payload }, function optionalCallback (err, httpResponse, body) { if (err) { console.error('upload failed:', err); } else { console.log('Upload successful! Server responded with:', body); } }, {'Content-Type': 'application/x-www-form-urlencoded'} ); function zumoJwt(s1, s2, masterKey) { var crypto = require('crypto'); function base64(input) { return new Buffer(input, 'utf8').toString('base64'); } function urlFriendly(b64) { return b64.replace(/\+/g, '-').replace(/\//g, '_').replace(/\=/g, ''); } function signature(input) { var key = crypto.createHash('sha256').update(masterKey + "JWTSig").digest('binary'); var str = crypto.createHmac('sha256', key).update(input).digest('base64'); return urlFriendly(str); } var b1 = urlFriendly(base64(s1)); var b2 = urlFriendly(base64(s2)); var b3 = signature(b1 + "." + b2); return [b1,b2,b3].join("."); } }