나는 유효한 OAuth2를 구글이 수락하는 토큰을 가지고 있지만, GoogleIdTokenVerifier는 심지어 그것을 구문 분석 할 수 없습니다.유효한 Google OAuth2 토큰을 파싱 할 수 없습니까?
토큰은 (이미 만료 걱정 것) ya29.1.AADtN_XcjzHgauKetBvrbgHImGFg1pjiHRQAKHyTglBDjEZsTPUMQJ5p-xAKtk955_4r6MdnTe3HZ08
없습니다.
그것은 내가 그래서 유효한 토큰해야
{
"issued_to": "34951113407.apps.googleusercontent.com",
"audience": "34951113407.apps.googleusercontent.com",
"scope": "https://www.googleapis.com/auth/userinfo.email",
"expires_in": 3175,
"email": "[email protected]",
"verified_email": true,
"access_type": "offline"
}
처럼 제정신 결과를 얻을 수 https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=...
를 호출 할 때
accountManager.blockingGetAuthToken(account, "oauth2:https://www.googleapis.com/auth/userinfo.email", true);
사용하여 안드로이드에 얻을 수 있습니다. 하지만
new GoogleIdTokenVerifier(new UrlFetchTransport(), JacksonFactory.getDefaultInstance())
.verify(authToken)
를 호출 할 때 그것은 JsonWebSignature을 디버깅하여 나에게
com.fasterxml.jackson.core.JsonParseException: Unexpected character ('É' (code 201)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
at [Source: [email protected]; line: 1, column: 2]
at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1378)
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:599)
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:520)
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._handleUnexpectedValue(UTF8StreamJsonParser.java:2275)
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._nextTokenNotInObject(UTF8StreamJsonParser.java:788)
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:674)
at com.google.api.client.json.jackson2.JacksonParser.nextToken(JacksonParser.java:55)
at com.google.api.client.json.JsonParser.startParsing(JsonParser.java:213)
at com.google.api.client.json.JsonParser.parse(JsonParser.java:372)
at com.google.api.client.json.JsonParser.parse(JsonParser.java:328)
at com.google.api.client.json.JsonParser.parseAndClose(JsonParser.java:158)
at com.google.api.client.json.JsonParser.parseAndClose(JsonParser.java:140)
at com.google.api.client.json.JsonFactory.fromInputStream(JsonFactory.java:206)
at com.google.api.client.json.webtoken.JsonWebSignature$Parser.parse(JsonWebSignature.java:480)
at com.google.api.client.googleapis.auth.oauth2.GoogleIdToken.parse(GoogleIdToken.java:57)
at com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier.verify(GoogleIdTokenVerifier.java:190)
을 제공 토큰 페이로드 그냥 1
것 같다.
- 안드로이드 4.4.2
- com.google.http 클라이언트 : 구글-HTTP-클라이언트 jackson2 : 1.17.0-RC를
- com.fasterxml.jackson.core : 잭슨 코어 : 2.3 0.0 또한 시도 GsonFactory (또한 시도는 구글-HTTP-클라이언트 잭슨의 과도 의존성에서 2.1.3 포함), 예외가 다른뿐만 아니라 명확하게 JsonWebSignature.parse에 의해 구문 분석 할 수 없습니다(). 내가 뭘 잘못했는지
? 거기에 다른 토큰 형식이 있습니까?
고맙습니다. 예, 이미 [내 앱] (https://github.com/dlazerka/mf)에서 [Google 로그인] (https://developers.google.com/identity/sign-in/android/)으로 전환했습니다. /blob/master/android/src/main/java/me/lazerka/mf/android/auth/SignInManager.java), 현재 권장되는 접근 방법 인 것 같습니다. –