2015-01-01 43 views
0

你好,我是OAuth的过程来验证回来的Android端,以便为这个我创造了在谷歌API控制台项目,有我创建客户端ID为Web和Android应用程序。我们是否需要生成调用Web服务之前令牌ID每次

这是我做的,因为使系统更安全,这样没人能黑客无论如何打我的web服务,如果有人这样做,然后验证服务器发送响应(无效标志)。

对于Android的这个过程中,我要生成令牌。 Google Play服务库有一个方法。

public static String getToken (Context context, String accountName, String scope) 

http://developer.android.com/reference/com/google/android/gms/auth/GoogleAuthUtil.html#getToken(android.content.Context,%20java.lang.String,%20java.lang.String)

我有我打电话给任何Web服务之前在我的应用程序,因为据我所知这个令牌小时内到期每次生成此令牌ID。这有点增加了延迟,因为首先它从Google获得令牌ID,然后使用令牌ID调用我的Web服务。

看起来不是一个最好的办法。你有什么建议呢?

在此先感谢。

回答

1

我认为最好的办法就是在客户端代码首先检查令牌已过期。如果不是,则不要生成新的令牌,只需使用已有的令牌直接调用Web服务即可。如果它过期了,那么先获得一个新的令牌,然后调用Web服务。这样,只有当您的令牌实际过期时,即您实际需要续订令牌时,您才会进行2次远程调用。

要实现此策略,您需要记住的所有内容(在您的代码中)为:
1)生成令牌的日期和时间; 2)其持续时间。

+0

如何知道该令牌何时到期?我如何获得时间后过期? –

+0

@Williams我认为这应该在令牌生成API的文档中。或者...在令牌生成API中应该有另一种方法,为您提供令牌的持续时间(有效时间)。至少,这就是通常设计这种与令牌相关的API的方式。 –

+0

不确定这是否相同,但请检查:https://developers.google.com/accounts/docs/OAuth2#expiration。 –

相关问题