Google OAuth:应用程序还是服务器?
Google OAuth: App or Server?
我想实施 Google OAuth。我有点困惑是在客户端(移动应用程序)端还是在服务器端实现它!!
在客户端实现它意味着在应用程序中传送密钥和秘密(我想避免)。但是,如果我在服务器端进行,回调成功后如何将正确的响应返回给客户端?
此外,这两种实现方式各有什么好处?
如果您正在谈论从本机移动应用程序(而不是 Web 视图)实施 Google+ OAuth 2 身份验证,那么,您需要创建一个已安装的应用程序客户端和一个 Web 应用程序google 控制台中的客户端。第一个用于您的移动应用程序,第二个用于您的服务器。
这是我用于申请的工作流程:
移动应用程序使用包含 Web 应用程序客户端 ID 的范围从 google 使用 g+ SDK 获取授权代码。这样,服务器就有了连接 google+.
的权限
您的范围可能如下所示:
String LOGIN_SCOPES =
"https://www.googleapis.com/auth/plus.login " +
"https://www.googleapis.com/auth/userinfo.email";
String SCOPES = "oauth2:server:client_id:" + GOOGLE_SERVER_CLIENT_ID + ":api_scope:" + LOGIN_SCOPES;
移动应用程序使用授权代码和正确的重定向 uri 调用服务器路由(与 google 开发控制台中安装的应用程序关联的那个通常看起来像这样 'urn:ietf:wg:oauth:2.0:oob').
服务器从 google 获取访问令牌,其中包含授权码、秘密 ID、应用程序 ID 和已安装的应用程序重定向 uri(如果您使用 Web 应用程序,它将失败并出现 redirect_uri_mismatch 错误)。
服务器使用访问令牌做任何它想做的事,创建一个有效的会话并将它作为对请求的响应提供给应用程序。
这样一来,您就不需要在客户端存储任何内容。您仍然需要将授权代码从客户端发送到您的服务器(最好是 https),但此代码只能使用一次,并且会立即被服务器使用。
希望对您有所帮助。
我想实施 Google OAuth。我有点困惑是在客户端(移动应用程序)端还是在服务器端实现它!!
在客户端实现它意味着在应用程序中传送密钥和秘密(我想避免)。但是,如果我在服务器端进行,回调成功后如何将正确的响应返回给客户端?
此外,这两种实现方式各有什么好处?
如果您正在谈论从本机移动应用程序(而不是 Web 视图)实施 Google+ OAuth 2 身份验证,那么,您需要创建一个已安装的应用程序客户端和一个 Web 应用程序google 控制台中的客户端。第一个用于您的移动应用程序,第二个用于您的服务器。
这是我用于申请的工作流程:
移动应用程序使用包含 Web 应用程序客户端 ID 的范围从 google 使用 g+ SDK 获取授权代码。这样,服务器就有了连接 google+.
的权限您的范围可能如下所示:
String LOGIN_SCOPES = "https://www.googleapis.com/auth/plus.login " + "https://www.googleapis.com/auth/userinfo.email"; String SCOPES = "oauth2:server:client_id:" + GOOGLE_SERVER_CLIENT_ID + ":api_scope:" + LOGIN_SCOPES;
移动应用程序使用授权代码和正确的重定向 uri 调用服务器路由(与 google 开发控制台中安装的应用程序关联的那个通常看起来像这样 'urn:ietf:wg:oauth:2.0:oob').
服务器从 google 获取访问令牌,其中包含授权码、秘密 ID、应用程序 ID 和已安装的应用程序重定向 uri(如果您使用 Web 应用程序,它将失败并出现 redirect_uri_mismatch 错误)。
服务器使用访问令牌做任何它想做的事,创建一个有效的会话并将它作为对请求的响应提供给应用程序。
这样一来,您就不需要在客户端存储任何内容。您仍然需要将授权代码从客户端发送到您的服务器(最好是 https),但此代码只能使用一次,并且会立即被服务器使用。
希望对您有所帮助。