/// <summary> /// Validate the token and get informations. /// </summary> /// <param name="accessToken">Access token.</param> /// <returns>TokenInfoResponse or Exception for error</returns> static IEnumerator ValidateToken(string accessToken) { var request = new UnityWebRequest( "https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=" + accessToken); var response = request.GetResponse(); while (!response.isDone) { yield return(null); } if (response.error != null) { yield return(response.error); yield break; } JsonReader reader = new JsonReader(response.text); var json = reader.Deserialize <Dictionary <string, object> >(); if (json == null) { yield return(new Exception(-1, "TokenInfo response parsing failed.")); yield break; } yield return(new TokenInfoResponse(json)); }
/// <summary> /// Revoke a access token. /// </summary> /// <param name="token">Access token.</param> /// <returns>RevokeResponse or Exception for error.</returns> static IEnumerator RevokeToken(string token) { var request = new UnityWebRequest( "https://accounts.google.com/o/oauth2/revoke?token=" + token); var response = request.GetResponse(); while (!response.isDone) { yield return(null); } if (response.error != null) { yield return(response.error); yield break; } JsonReader reader = new JsonReader(response.text); var json = reader.Deserialize <Dictionary <string, object> >(); if (json == null) // no response is success. { yield return(new RevokeResponse()); // error is null. } else { yield return(new RevokeResponse(json)); } }
/// <summary> /// Get the access token by the authorization code. /// </summary> /// <param name="authorizationCode">Authorization code.</param> /// <returns>TokenResponse or Exception for error.</returns> IEnumerator GetAccessTokenByAuthorizationCode(string authorizationCode) { var request = new UnityWebRequest("https://accounts.google.com/o/oauth2/token"); request.method = "POST"; request.headers["Content-Type"] = "application/x-www-form-urlencoded"; request.body = Encoding.UTF8.GetBytes(string.Format( "code={0}&" + "client_id={1}&" + "client_secret={2}&" + "redirect_uri={3}&" + "grant_type=authorization_code", authorizationCode, ClientID, ClientSecret, RedirectURI)); var response = request.GetResponse(); while (!response.isDone) { yield return(null); } if (response.error != null) { yield return(response.error); yield break; } JsonReader reader = new JsonReader(response.text); var json = reader.Deserialize <Dictionary <string, object> >(); if (json == null) { yield return(new Exception(-1, "GetAccessToken response parsing failed.")); yield break; } yield return(new TokenResponse(json)); }