测试用户非常善于进行集成测试.
当我开发facebook oauth启用的东西时,我可以以编程方式创建测试用户并将其用作我的应用程序的真实用户.它们的行为方式与真实用户相同,唯一的区别是它们是沙盒.
Google会提供类似的东西吗?
他们正在将所有服务转移到oauth2,我想与"真实"用户进行完整的集成测试.
目前我手动运行我的集成测试并在请求时授权应用程序,显然这种方法不适合CI和真正的自动化测试.
我看到的唯一选择是创建一个仅在测试中使用的真实帐户,并使用其与硒等内容交互的凭据.
其他选择?
我正在尝试从我的Android应用访问新的Gmail API(已于25.06.2014发布),以便返回某个用户帐户中的所有电子邮件.我正在使用ADT插件在Eclipse中开发应用程序.
到目前为止我做了什么:
我在Google Developers Console中注册了该应用程序
(link:console.developers.google.com/project).
我已实施Google+登录按钮(链接:developers.google.com/ +/mobile/android/sign-in ).Google+登录按钮可对用户进行身份验证并管理OAuth 2.0流程,从而简化您与Google API的集成.
我已将附加范围"https:// www.googleapis.com/auth/gmail.readonly"添加到Google+授权中,以便按照
(链接:developers.google.com/gmail/api/v1)中的说明访问Gmail API / reference/users/threads/list).
此时我有一个初始化的GoogleApiClient对象.
GoogleApiClient对象将ServiceConnection(链接:developer.android.com/reference/android/content/ServiceConnection.html)包装到Google Play服务.GoogleApiClient对象用于与Google+ API通信,并在与服务建立异步连接后正常运行,表明:
如何从此处继续使用此httprequest获取所有消息?
我此时尝试访问Gmail API,但我收到身份验证错误401:需要登录,即使Google+登录成功,我也成功返回了用户圈子列表.
编辑:SecondActivity.java
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import com.google.android.gms.auth.GoogleAuthException;
import com.google.android.gms.auth.GoogleAuthUtil;
import com.google.android.gms.auth.GooglePlayServicesAvailabilityException;
import com.google.android.gms.auth.UserRecoverableAuthException;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.common.SignInButton;
import com.google.android.gms.common.api.CommonStatusCodes;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
import com.google.android.gms.common.api.ResultCallback;
import com.google.android.gms.common.api.Scope;
import com.google.android.gms.plus.People; …Run Code Online (Sandbox Code Playgroud) 我正在使用[localhost:8080]使用Google Drive API进行开发.突然,我觉得在我的本地部署沙箱中测试它,它的IP地址为[192.168.1.1:8080].并且根据我在开发人员控制台客户端回调URL中更改了凭据.我正在使用OAuth2WebServerFlow来获取用户同意的刷新令牌.然后将来我使用刷新令牌和OAuth2WebServerFlow来验证用户.但我很惊讶 - 我得到了错误:
我不知道发生了什么或者我该如何解决它.发生了什么,我不明白
我想在本地计算机上测试Google Social登录系统.但是,当我创建新的OAuth按钮时:"创建新客户端ID",它要求我填写授权重定向URI,该URI需要是有效地址(以.com或.org结尾).
显然,当我们在本地开发时,我们最后没有.com或.org.我有一个虚拟主机设置...我的本地开发地址是mywebsite.local
有没有办法输入重定向URI mywebsite.local没有接收错误:
无效的重定向:http://mywebsite.local/login/auth必须以公共顶级域名(例如.com或.org)结尾
如何以编程方式向Google进行身份验证?现在的ClientLogin(https://developers.google.com/accounts/docs/AuthForInstalledApps)已过时,我们如何能够执行编程认证,以与谷歌的OAuth2?
使用ClientLogin,我们可以 使用电子邮件和密码参数向https://www.google.com/accounts/ClientLogin发送帖子, 并获取身份验证令牌.
使用OAuth2我找不到解决方案!
#我的应用程序是一个java后台进程.我看到,点击此链接:developers.google.com/accounts/docs/OAuth2InstalledApp#refresh,如何使用刷新的令牌获取新的访问令牌.
问题是,当我有一个新的有效访问令牌时,我找不到一个关于如何实例化Analytics对象(例如)来执行查询的java示例
这是我的代码在调用"execute()"时返回401无效凭据:
public class Test {
static final String client_id = "MY_CLIENT_ID";
static final String client_secret = "MY_SECRET";
static final String appName = "MY_APP";
private static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
private static final JsonFactory JSON_FACTORY = new JacksonFactory();
static String access_token = "xxxx";
static String refreshToken = "yyyyy";
public static void main (String args[]){
try {
GoogleCredential credential =
new GoogleCredential.Builder()
.setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setClientSecrets(client_id, client_secret).build();
credential.setAccessToken(access_token);
credential.setRefreshToken(refreshToken); …Run Code Online (Sandbox Code Playgroud) 我正在对以下URL进行get请求({id}替换为web界面中的id):
https://www.googleapis.com/calendar/v3/calendars/{id}
Run Code Online (Sandbox Code Playgroud)
一些断言:
正在使用有效的访问令牌正确设置Authorize标头(该令牌适用于Analytics API)
我为oauth2设置了以下范围,它正确显示:
https://www.googleapis.com/auth/calendar
Run Code Online (Sandbox Code Playgroud)令牌似乎没有过期; 它适用于Analytics API.
{ "error": { "errors": [ { "domain": "global", "reason": "insufficientPermissions", "message": "Insufficient Permission" } ], "code": 403, "message": "Insufficient Permission" } }
Run Code Online (Sandbox Code Playgroud)当我在iOS应用中登录Gmail时,我收到以下错误(屏幕截图),并且未显示登录字段.我们正在WKWebView中加载登录屏幕.
我已经读过谷歌正在弃用OAuth的网页视图,并将在2017年4月20日阻止请求.正如Google开发人员博客中所见:https: //developers.googleblog.com/2016/08/modernizing-oauth-interactions-in -native-apps.html
这是否意味着我已经需要使用或是否有其他可行的解决方案?在我需要更新之前,我想我还有更多时间.
开发人员凭据(例如密码,密钥和客户端ID)旨在供您使用并标识您的API客户端.您将保密您的凭据并做出合理的努力来防止和阻止其他API客户端使用您的凭据.开发人员凭据可能未嵌入开源项目中.
(https://developers.google.com/terms/,我的重点)
这是否意味着我的开源驱动器命令行客户端需要强制我的软件的每个用户在Google云端控制台中设置一个新项目?有更好的选择吗?
它不是很难从非开源中提取客户端ID和客户端"秘密",为什么区别呢?
"安装应用程序"客户端ID和机密并不是真正的秘密,Google文档似乎同意:
该过程会生成客户端ID,在某些情况下会导致客户端机密,您将其嵌入应用程序的源代码中.(在这种情况下,客户端秘密显然不被视为秘密.)
我们目前用于google-api-python-client处理面向用户的 OAuth 流程。我们有一些用户给我们发电子邮件询问为什么他们的帐户没有成功导入,当我们查看时,他们的令牌没有适当的范围。例如,我们希望找到所有这些范围:
https://www.googleapis.com/auth/gmail.metadata
openid
https://www.googleapis.com/auth/userinfo.email
但我们只收到最后 2 个。当我们查看 OAuth 流程时,我们注意到我们的 OAuth 流程如下所示(应用程序名称和帐户名称经过编辑)。请注意,请求的范围有一个复选框,并且默认情况下该复选框处于未选中状态。(从 2020 年中期到大约一周前,此流程有 2 个额外的确认步骤,但默认情况下选中了最后一个复选框。)
将其与流行应用程序 Fantastical 的 OAuth 流程进行比较(许多其他应用程序,包括 Spark,看起来很相似):
在找到链接到Google 博客上这篇文章的StackOverflow 答案后,似乎有些应用程序已继承到第二个流程,但第一个流程是新的默认流程。两个问题:
默认情况下未选中的复选框似乎是一个相对较新的更改,我找不到任何有关它的文档。这是新的默认行为,还是 OAuth 流程中是否有一个参数/某些内容我们可以更改以默认检查它?当未选中时,用户认为他们不需要检查它,因此他们按“继续”,然后我们的应用程序必须抛出错误并向用户解释他们需要检查该范围复选框。现在复选框未选中似乎有点疯狂,因为它是我明确要求的范围……这就是此流程的全部要点。
有没有什么方法可以使我们的流程与 Fantastical、Spark 以及 2018 年左右之前创建的任何其他 OAuth 应用程序仍然具有的旧的、更简单的流程保持一致?或者那些其他旧应用程序是否有过渡到新流程的预计到达时间?上述 Google 博文表示,新流程将“在 2019 年初扩展到现有客户”,因此我们大约晚了 2.5 年才做出这一改变。就目前情况而言,它使“新”OAuth 应用程序(我们的应用程序是在 2019 年创建的,所以算不上新......)处于令人难以置信的劣势,因为它的步骤更多,需要明确同意,更容易出现用户错误,并且使它看起来像我们的应用程序在任何方面都受到较少的审查或“安全”,因为其流程与用户接受的许多其他应用程序的培训流程截然不同。
这个问题已经存在了几个月了,所以也发布这篇文章来帮助处于相同位置的其他人。一些额外的要点,以防对任何人有帮助:
如果我从 Fantastical 流程中获取 client_id 和 redirect_url 并在我们应用程序的链接中使用它,则该流程看起来与他们的相同。所以它似乎是由客户端 ID 驱动的,而不是 URL 或我们流程中发生的某些事情。
我们的应用已通过 Google 的第三方安全评估并通过,因此它可能与我们请求的范围或我们的应用在审批流程中的状态无关
我们的流程和 Fantastical 都发生在 Web 视图中,因此它不太可能与本地与 Web 视图相关 …
google-api google-oauth google-api-python-client google-cloud-platform gmail-api
检索包含此错误的邮件时,某个域的Gmail API失败:
com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 OK
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Delegation denied for <user email>",
"reason" : "forbidden"
} ],
"message" : "Delegation denied for <user email>"
}
Run Code Online (Sandbox Code Playgroud)
我正在使用OAuth 2.0和Google Apps域范围的授权来访问用户数据.域已授予应用程序的数据访问权限.
google-oauth ×10
oauth-2.0 ×6
gmail-api ×3
google-api ×2
google-login ×2
oauth ×2
android ×1
clientid ×1
curl ×1
google-plus ×1
ios ×1
java ×1
open-source ×1
uri-scheme ×1