1

我正在尝试启用服务器端对用户从 iOS 应用程序进行身份验证的 Google API 的离线访问。这是为了允许服务器在 iOS 应用程序之外持续访问 Google API。

Google 记录了以下方法: https ://developers.google.com/identity/sign-in/ios/offline-access

我已经完全按照他们的文档进行了准系统项目。但是,每当我尝试用一​​次性授权代码交换访问和刷新令牌时,我都会在交换过程中收到“redirect_uri_mismatch”错误。

我搜索了论坛,并且许多人建议配置没有重定向 URI 的 Google API 项目 OAuth 2.0 客户端 ID(来自 Google 开发人员控制台)。但是,这会导致错误“在客户端类型“web”中缺少属性“redirect_uris””

我也尝试过其他 OAuth 2.0 客户端 ID 类型(例如,其他),但没有成功。

有没有人能够让这个流程工作?任何帮助将不胜感激!

4

2 回答 2

0

我也碰到过这个。谷歌的例子是错误的,或者至少是不完整的。您必须在开发人员控制台上设置重定向 uri 并将其传递给 oauth 客户端,如下所示:

credentials = client.credentials_from_clientsecrets_and_code(
CLIENT_SECRET_FILE,
['https://www.googleapis.com/auth/drive.appdata', 'profile', 'email'],
auth_code, None, "your redirect uri")

此处的完整文档http://oauth2client.readthedocs.io/en/latest/source/oauth2client.client.html

于 2017-09-12T12:48:57.310 回答
0

在您的代码中将redirect_uri 设置为urn:ietf:wg:oauth:2.0:oob,它用于已安装的应用程序。正如@oravecz这里提到的。这对我有用。

于 2022-01-25T15:39:08.550 回答