Die Integration mit PlayIntegrity Api und GoogleAuth führt zu 403 Forbidden ErrorAndroid

Forum für diejenigen, die für Android programmieren
Guest
 Die Integration mit PlayIntegrity Api und GoogleAuth führt zu 403 Forbidden Error

Post by Guest »

Ich versuche, die Play Integrity API in meine Android-App zu integrieren.
Ich habe meine Android-App für interne Tests bereitgestellt und sie auch in der Google Play-Konsole aktiviert, wie im folgenden Screenshot gezeigt
Image

Hier ist der Beispielcode für meine Android-App

Code: Select all

val integrityTokenResponse = integrityTokenProvider.request(
StandardIntegrityTokenRequest.builder()
.setRequestHash(hash)
.build()
)
integrityTokenResponse.addOnSuccessListener { response ->
lifecycleScope.launch {
val apiResponse = retrofit.verifyHash(VerifyHashRequest(response.token()))
runOnUiThread {
textView.text = apiResponse.message
}
}
}.addOnFailureListener { exception ->
Toast.makeText(this@MainActivity,"Failure ${exception.message}",Toast.LENGTH_LONG).show()
}
Jetzt ruft der verifyHash meine Backend-API auf, hier ist mein Code für die Backend-API, für die ich node.js verwende

Code: Select all

import { GoogleAuth } from "google-auth-library";
import path from "path";

const {
token,
}: {
token: string;
} = await request.json();

const keyFilePath = path.resolve(
"./my.json"
);

const auth = new GoogleAuth({
keyFile: keyFilePath,
scopes: ["https://www.googleapis.com/auth/playintegrity"],
});
const packageName = "myandroidpackagename";

const client = await auth.getClient();
const accessToken = await client.getAccessToken();
const url = `https://playintegrity.googleapis.com/v1/${packageName}:decodeIntegrityToken`;

console.log("token", token);
console.log("accessToken", accessToken.token);
const response = await fetch(url, {
method: "POST",
headers: {
Authorization: `Bearer ${accessToken.token}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
integrityToken: token,
}),
});

console.log("response", response);

if (!response.ok) {
throw new Error(response.statusText);
}

const json = await response.json();

return Response.json({
message: JSON.stringify(json),
});
} catch (e) {
return Response.json({
message: "Error " + e,
});
}
Jetzt habe ich myandroidpackagename durch meinen richtigen Android-Paketnamen ersetzt,
In der Google Play Console habe ich mein Google Cloud-Projekt verknüpft< /p>
und in meinem Google Cloud-Projekt habe ich die Google Play Integrity API aktiviert
[img]https:/ /i.sstatic.net/bmmhr7LU.png[/img]

In meinem Google Cloud-Projekt habe ich Dienstkonten aktiviert und die JSON-Datei heruntergeladen, die ich im obigen node.js Code
Ich kann sehen, wie Token und AccessToken gedruckt werden, aber die Antwort gibt eine Fehlermeldung aus:

Code: Select all

{
status: 403,
statusText: 'Forbidden',
headers: Headers {
vary: 'Origin, X-Origin, Referer',
'content-type': 'application/json; charset=UTF-8',
date: 'Sun, 29 Dec 2024 08:19:31 GMT',
server: 'ESF',
'content-length': '154',
'x-xss-protection': '0',
'x-frame-options': 'SAMEORIGIN',
'x-content-type-options': 'nosniff',
'alt-svc': 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000'
},
body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true },
bodyUsed: false,
ok: false,
redirected: false,
type: 'basic',
url: 'https://playintegrity.googleapis.com/v1/myapppackage:decodeIntegrityToken'
}
Was fehlt noch?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post