0

拨打电话后:

GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
        httpTransport, JSON_FACTORY, clientSecrets, SCOPES).setDataStoreFactory(
        dataStoreFactory).build();
Credential cred = flow.loadCredential(userIdFromMyApplication);

并发现我们userIdFromMyApplication尚未允许我们使用他们的 Google 帐户(即为cred空),我执行以下操作:

if (cred == null) {
  String url = flow.newAuthorizationUrl().setState("/linkaccount")
     .setRedirectUri("http://myapp.com/oauth2.php").build();
  //redirect them to the url    
}

我的问题是,一旦他们授予我的应用程序访问权限,并且我在 API 访问令牌下设置的应用程序的 oauth2 重定向 URL 由 Google 使用访问code参数集调用,我该如何将其codeuserIdFromMyApplication?在构建redirectUrl 时,我是否必须userIdFromMyApplication在调用中进行设置?setState这是一个可行的约定吗?或者有没有更聪明的方法来确定哪个访问令牌属于哪个用户?

4

1 回答 1

1

要么将用户 ID 存储在您的 httpSession 中,要么将用户 ID(理想情况下是混淆的)添加到“状态”参数中,然后将其包含在 oauth 回调中。我个人使用httpSession。

实际上,第二种方法可能会带来安全风险,因此请使用 httpSession。

于 2013-09-11T04:13:12.807 回答