我们在Unity游戏和Google SignIn中使用Firebase Auth,并且需要访问Google服务,例如Google Classroom。
使用此代码https://firebase.google.com/docs/auth/admin/verify-id-tokens#unity登录后,Firebase Auth为我们提供了JWT IdToken
Firebase.Auth.FirebaseUser newUser = task2.Result;
var token = await newUser.TokenAsync(false);
我尝试将此令牌传递给Google课堂服务,但它需要OAuth2 AccessToken。
如何将JWT Firebase IdToken转换为GoogleClassroom API可以使用的AccessToken?
我正在寻找要传递给Google Classroom API的AccessToken
var credential = GoogleCredential.FromAccessToken(AccessToken);
var service = new ClassroomService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
我已经尝试过answer这个问题,但是服务返回了404。
答案 0 :(得分:1)
您正在尝试获取Google访问令牌。 您只需通过简单的API调用即可获取它。
IEnumerator GetAccessToken()
{
WWWForm form = new WWWForm();
form.AddField("client_id", "your_webClientId");
form.AddField("client_secret", "your_clientsecret");
form.AddField("grant_type", "authorization_code");
form.AddField("code", "your_authcode);
UnityWebRequest www = UnityWebRequest.Post("https://www.googleapis.com/oauth2/v4/token", form);
yield return www.SendWebRequest();
if (www.isNetworkError || www.isHttpError)
{
}
else
{
//Access token response
GoogleData googleData =JsonUtility.FromJson<GoogleData>(www.downloadHandler.text);
Debug.LogError(googleData.access_token);
}
}
如果API成功,则可以将响应解析为数据模型类。 注意:请勿更改“ grant_type”字段值。
[System.Serializable]
public class GoogleData
{
public string access_token;
public string token_type;
public int expires_in;
public string refresh_token;
}