Google端点java Oauth / Oauth2完整示例

时间:2015-04-22 12:09:25

标签: java android google-app-engine google-cloud-endpoints

阅读了很多链接后: 我无法解决服务器端getuser = null问题的解决方法。 我需要一个完整的示例服务器端(app engine java)和客户端(android app)。 在某些链接中,人们会说:将用户保存到数据存储区并将其恢复。但我不能保存用户......因为它总是空的......

error

问候。

3 个答案:

答案 0 :(得分:1)

要访问User对象,首先需要配置Endpoint以使用OAuth。在此处找到说明:https://cloud.google.com/appengine/docs/java/endpoints/auth

OAuth意味着您需要将项目配置为在定义API时在您引用的Constants对象下配置正确的客户端ID。

然后,您需要将User对象添加到Endpoint方法,例如:

@ApiMethod(name = "sayHi")
public MyBean sayHi(@Named("name") String name, User user) throws OAuthRequestException, IOException {
  

如果传入的客户端请求没有授权令牌或无效   一,用户为空。在您的代码中,您需要检查用户是否   null并执行以下操作之一,具体取决于条件:

     
      
  • 如果用户非空,请执行授权操作。
  •   
  • 如果用户为null,则抛出OAuthRequestException。
  •   
  • 或者,如果用户为空,则在未经授权的访问时,对未经授权的客户端访问执行某些操作   期望的。
  •   

答案 1 :(得分:0)

假设您已生成clientIds(https://cloud.google.com/appengine/docs/java/endpoints/auth#Creating_OAuth_20_client_IDs),请确保您还更新Constants.java中的* _CLIENT_ID字符串:

如果您从maven原型创建项目,则值将显示如下:

public static final String WEB_CLIENT_ID = "replace this with your web client application ID";
public static final String ANDROID_CLIENT_ID = "replace this with your Android client ID";
public static final String IOS_CLIENT_ID = "replace this with your iOS client ID";

答案 2 :(得分:0)

我明白了。 只需获取CLIENT_ID和WEB_ID的新值。 现在的问题是在后端获取电子邮件用户的问题。 在端点... user!= null但始终是example.google.com。

Google正在努力解决。