Skip to content

Commit ebeaf49

Browse files
committed
Update getLimitedUseToken
1 parent fc290d2 commit ebeaf49

2 files changed

Lines changed: 23 additions & 7 deletions

File tree

app_check/src/android/common_android.cc

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -164,11 +164,25 @@ void AndroidAppCheckProvider::GetToken(
164164
void AndroidAppCheckProvider::GetLimitedUseToken(
165165
std::function<void(AppCheckToken, int, const std::string&)>
166166
completion_callback) {
167-
LogWarning(
168-
"GetLimitedUseToken() was called, but the AppCheckProvider interface on "
169-
"Android does not yet support limited-use tokens. Falling back to "
170-
"GetToken().");
171-
GetToken(completion_callback);
167+
JNIEnv* env = GetJniEnv();
168+
169+
jobject j_task = env->CallObjectMethod(
170+
android_provider_,
171+
app_check_provider::GetMethodId(app_check_provider::kGetLimitedUseToken));
172+
std::string error = util::GetAndClearExceptionMessage(env);
173+
if (error.empty()) {
174+
// Create an object to wrap the callback function
175+
TokenResultCallbackData* completion_callback_data =
176+
new TokenResultCallbackData(completion_callback);
177+
util::RegisterCallbackOnTask(
178+
env, j_task, TokenResultCallback,
179+
reinterpret_cast<void*>(completion_callback_data),
180+
jni_task_id_.c_str());
181+
} else {
182+
AppCheckToken empty_token;
183+
completion_callback(empty_token, kAppCheckErrorUnknown, error.c_str());
184+
}
185+
env->DeleteLocalRef(j_task);
172186
}
173187

174188
} // namespace internal

app_check/src/android/common_android.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,10 @@ namespace internal {
3131
// Used to setup the cache of AppCheckProvider interface method IDs to reduce
3232
// time spent looking up methods by string.
3333
// clang-format off
34-
#define APP_CHECK_PROVIDER_METHODS(X) \
35-
X(GetToken, "getToken", \
34+
#define APP_CHECK_PROVIDER_METHODS(X) \
35+
X(GetToken, "getToken", \
36+
"()Lcom/google/android/gms/tasks/Task;"), \
37+
X(GetToken, "getLimitedUseToken", \
3638
"()Lcom/google/android/gms/tasks/Task;")
3739
// clang-format on
3840

0 commit comments

Comments
 (0)