【问题标题】:Using serverAuthCode to retrive refreshToken and accessToken - code sample使用服务器 AuthCode 检索刷新 Token 和 accessToken - 代码示例
【发布时间】:2015-12-20 03:27:43
【问题描述】:
来自 google API 文档 url 最后一段“将 serverAuthCode 字符串安全地传递给您的服务器,这将交换访问令牌和刷新令牌的代码”。我不确定如何处理serverAuthCode。使用serverAuthCode 获取accessToken 和refreshToken 的代码示例在哪里?
【问题讨论】:
标签:
google-api
google-api-java-client
google-api-client
google-signin
【解决方案1】:
com.iavian给出的解决方案很完美,
在我的情况下,我从 https://github.com/react-native-google-signin/google-signin 获取 serverAuthCode,
然后你可以在后台做下面的代码
import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeTokenRequest;
import com.google.api.client.googleapis.auth.oauth2.GoogleTokenResponse;
public static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
public static final JsonFactory JSON_FACTORY = new JacksonFactory();
GoogleTokenResponse response = new GoogleAuthorizationCodeTokenRequest(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, Your_OAUTH_CLIENTID, Your_OAUTH_CLIENTSECRET, Serverauthcode_from_react_native, "").execute();
注意:serverAuthCode只能使用一次,从你得到的response中你应该存储refreshToken,下次使用refreshToken获取AccessToken
【解决方案2】:
以下是一个人必须做的事情
GoogleTokenResponse response = new GoogleAuthorizationCodeTokenRequest(httpTransport, jsonFactory, Main.GMAIL_OAUTH_CLIENTID, Main.GMAIL_OAUTH_CLIENTSECRET, X.getServerauthcode(), "").execute();
X.setServeraccesstoken(response.getAccessToken());
X.setServerrefreshtoken(response.getRefreshToken());