Ich habe meine Android-App für interne Tests bereitgestellt und sie auch in der Google Play-Konsole aktiviert, wie im folgenden Screenshot gezeigt

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()
}
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,
});
}
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'
}