我正在尝试将Google OAuth 2.0集成到我的使用Phonegap Build(云编译器)构建的Cordova应用程序中。
我使用cordova-plugin-googleplus
进行客户端授权
和google-api-nodejs-client
用于我的node.js服务器。
它应该如何工作的主要思想described here。 简而言之:客户端生成一次性代码(authCode)并将其发送到服务器,然后服务器必须将该代码交换为accessToken。
问题是客户端成功完成授权过程,生成authCode,将其发送到服务器,然后服务器在响应正文中引发“ redirect_uri_mismatch”错误。
这是后端代码
const oauth2Client = new google.auth.OAuth2(
'CLIENT_ID.apps.googleusercontent.com',
'CLIENT_SECRET',
'postmessage'
);
const url = oauth2Client.generateAuthUrl({
access_type: 'offline'
});
const auth = async function(code){
const {tokens} = await oauth2Client.getToken(code);
oauth2Client.setCredentials(tokens);
};
和客户端
window.plugins.googleplus.login(
{
'webClientId': 'CLIENT_ID.apps.googleusercontent.com',
'offline': true
};
我确定OAuth 2.0客户端配置正确。我有2个OAuth 2.0客户端ID。第一个是Web应用程序,第二个是具有SHA-1代码的Android应用程序,我敢肯定这是正确的。
我也有Web应用程序,它使用相同的OAuth 2.0客户端,相同的服务器,并且运行良好,仅当我使用cordova-plugin-googleplus
插件生成authCode时才会发生错误