我创建了一个chrome扩展程序,该扩展程序可以在mail.google.com页面上使用并使用gapi来管理电子邮件,如果chrome用户与gmail用户不匹配,则效果不佳。
原因是我从chrome.identity.getAuthToken夹中获取了一个access_token,它为我提供了chrome当前用户,但没有gmail用户。
我尝试在扩展程序中使用gapi.auth2来让gmail用户访问令牌,但是没有运气:
当从background.js中使用时,会收到“ gapi.auth2.ExternallyVisibleError:无效的cookiePolicy”错误
当从content.js使用相同的代码时,它会收到“ gapi undefined”错误。
有没有办法从当前的Gmail用户(而不是Chrome用户)获取access_token?
答案 0 :(得分:1)
chrome.identity.launchWebAuthFlow为我工作。
创建oauth2网址:
buildscript {
repositories {
jcenter()
google()
maven {
url 'https://maven.fabric.io/public'
}
// Add this to your project
maven { url 'https://dl.bintray.com/android/android-tools' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'com.google.gms:google-services:4.2.0'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4'
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
// These docs use an open ended version so that our plugin
// can be updated quickly in response to Android tooling updates
// We recommend changing it to the latest version from our changelog:
// https://docs.fabric.io/android/changelog.html#fabric-gradle-plugin
classpath 'io.fabric.tools:gradle:1.27.0'
}
}
allprojects {
repositories {
jcenter()
maven {
url 'https://maven.google.com/'
}
google()
}
}
redirectUri 为var url = 'https://accounts.google.com/o/oauth2/auth' +
'?client_id=' + clientId +
'&response_type=token' +
'&redirect_uri=' + redirectUri +
'&login_hint=' + email +
'&scope=' + scopes;
的位置,并且必须位于“授权重定向URI”列表中(在开发人员控制台中)。我在这里有些挣扎,因为最初我创建了“ chrome应用”凭据,并且没有授权的重定向URI选项,所以我切换到了“网络应用”凭据。
电子邮件是当前用户的电子邮件。如果用户已经具有权限,则指定电子邮件有助于省略对话框。
clientId 和范围需要手动指定,它们不会从清单中自动获取。
然后运行launchWebAuthFlow:
https://<your extension id>.chromiumapp.org/oauth2