当遵循Spotify授权流程并在我的Ionic Framework应用程序(在iOS中运行)中使用Facebook登录选项时,在完成Facebook登录后,Safari View Controller重定向到空白页面而不是Spotify页面,显示用户的信息和注销选项。
我遵循了《 Spotify授权指南》(https://developer.spotify.com/documentation/general/guides/authorization-guide/#authorization-code-flow)中的代码示例。我在下面包括了回调函数。
app.get('/callback', function(req, res) {
// your application requests refresh and access tokens
// after checking the state parameter
var code = req.query.code || null;
var state = req.query.state || null;
var storedState = req.cookies ? req.cookies[stateKey] : null;
if (state === null || state !== storedState) {
res.redirect('/#' +
querystring.stringify({
error: 'state_mismatch'
}));
} else {
res.clearCookie(stateKey);
var authOptions = {
url: 'https://accounts.spotify.com/api/token',
form: {
code: code,
redirect_uri: redirect_uri,
grant_type: 'authorization_code'
},
headers: {
'Authorization': 'Basic ' + (new Buffer.from(client_id + ':' + client_secret).toString('base64'))
},
json: true
};
request.post(authOptions, function(error, response, body) {
if (!error && response.statusCode === 200) {
console.log("Successful response")
var access_token = body.access_token,
refresh_token = body.refresh_token;
console.log("Attempting to redirect");
res.redirect('APPNAME://token#' + access_token);
} else {
res.redirect('/#' +
querystring.stringify({
error: 'invalid_token'
}));
}
});
}
});
身份验证可以正常工作,但是空白页不会给用户那种感觉。当我在safariViewController上按完成时,该应用程序将按预期进行。同样,当我刷新safariViewController时,也会加载Spotify用户页面,其中显示了用户个人资料图像以及注销选项。我只是不确定为什么我必须按刷新才能显示出来。我尝试使用一些异步/等待没有成功。
请注意,加载空白页时,safari视图控制器将页面显示为“ facebook.com”,而当我按刷新时,safari视图控制器将显示“ accounts.spotify.com”。