我想在 Android 上运行我的桌面 chrome 扩展程序,所以我尝试在我手机上的 Yandex 浏览器中运行它。除了谷歌登录外,它运行正常。(在桌面 Chrome 和桌面 Yandex 上一切正常)。 此代码由后台脚本调用:
var url = 'https://accounts.google.com/o/oauth2/auth' +
'?client_id=' + clientId +
'&response_type=id_token' +
'&access_type=offline' +
'&redirect_uri=' + redirectUri +
'&scope=' + scopes;
getIdToken: function (message) {
const _this = this;
var idToken = "";
chrome.identity.launchWebAuthFlow(
{
'url': url,
'interactive': true
},
function (redirectedTo) {
console.log("[2]auth-manager called: "+redirectedTo);
if (chrome.runtime.lastError) {
// Example: Authorization page could not be loaded.
console.log("lastError: "+chrome.runtime.lastError.message);
}
else {
var response = redirectedTo.split('#', 2)[1];
// Example: id_token=<YOUR_BELOVED_ID_TOKEN>&authuser=0&hd=<SOME.DOMAIN.PL>&session_state=<SESSION_SATE>&prompt=<PROMPT>
idToken = (response.split('&')[0]).split('=', 2)[1];
console.log("auth-manager id token", idToken);
if (message != undefined) {
message.data.google_id_token = idToken;
cloudWebSocket.sendMessage(JSON.stringify(message));
_this.isLogged = true;
closePopup();
alert('login successful');
}
}
}
);
当我调用这个函数时,redirectedTo 是未定义的,我得到一个 chrome.runtime.lastError.message:"canceled"。就是这样。
我使用与桌面应用程序完全相同的 list ,具有相同的 clientId、redirectUri 和范围。 我无法弄清楚,是什么导致了这个问题? 如果有另一种方法可以在没有这个问题的情况下执行谷歌登录,它也会有所帮助。
最佳答案
参见 Web Extensions API ...特别是那里的平台支持表。
无论如何,在服务器端启动 oAuth2 流程应该是可能的。
关于android - 谷歌登录/登录 Yandex Android 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53712905/