调用firebasedynamiclinks.getInstance().getDynamicLink(getIntent())
使用pendingdynamiclinkdata.getlink().getQueryParameter(“oobcode”));
从动态链接获取查询参数(在本例中获取用于重置密码的密码代码。
在上一步中使用oobCode并调用firebaseauth.getinstance().confirmpasswordreset(actionCode,password)
按钮单击(从Use inputted editText字段中获取密码)来重置密码。
理想情况下,我希望在密码重置后登录我的用户。为了做到这一点,我需要有电子邮件地址使用密码重置(我需要从试图登录的用户获得firestore文档信息)。
所以我需要能够传递电子邮件地址到屏幕重置密码。
以下是我的相关代码片段:
初始“忘记密码屏幕”:用户在这里输入电子邮件。首先构建我的操作代码设置,然后执行sendPasswordResetEmail()方法。
String url = "https://example.com"; //my deep link set in Firebase console
ActionCodeSettings settings = ActionCodeSettings.newBuilder()
.setAndroidPackageName(
getPackageName(),
true, /* install if not available? */
null /* minimum app version */)
.setHandleCodeInApp(true)
.setUrl(url)
.build();
mAuth.sendPasswordResetEmail(email, settings)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "Email sent.");
}
else {
Exception e = task.getException();
Log.w(TAG, "passwordResetRequest:failure " + e.getMessage(), task.getException());
if (e instanceof FirebaseAuthInvalidCredentialsException) {
}
}
}
});
然后在电子邮件中选择链接后,我们进入重置密码屏幕。在这里,我们调用以下代码从动态链接中获取参数:
FirebaseDynamicLinks.getInstance()
.getDynamicLink(getIntent())
.addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
@Override
public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
// Get deep link from result (may be null if no link is found)
Uri deepLink = null;
if (pendingDynamicLinkData != null && pendingDynamicLinkData.getLink() != null) {
deepLink = pendingDynamicLinkData.getLink();
actionCode = deepLink.getQueryParameter("oobCode");
actionMode = deepLink.getQueryParameter("mode");
}
}
})
.addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "getDynamicLink:onFailure", e);
}
});
最后,我们使用oobCode(允许密码重置的操作代码),在单击按钮和用户输入新密码时,我们使用以下方法重置密码:
resetPass.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (actionCode != null && !actionCode.equals(""))
FirebaseAuth.getInstance().confirmPasswordReset(actionCode, newPassword.getText().toString()).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful() && task.getResult() != null)
Log.d(TAG, "Deep Link confirmPassReset: " + task.getResult().toString());
}
});
}
});
这就是我挣扎的地方。我试图在构建ActionCodeSettings
时传递一个电子邮件地址。例如:string url=“https://example.com/?email=jsmith@gmail.com”;
,然后尝试使用:deeplink.getQueryParameter(“email”)在重置密码屏幕中获取它们;
,但是每次尝试都得到null
。我错过了什么。是否可以通过在Firebase控制台中创建的动态链接传递自定义查询参数?如果没有,最好的方法是什么?
val actionUrl = deepLink.getQueryParameter("continueUrl")
actionUrl.substring(actionURL.lastIndexOf("=") + 1, actionURL.length)
我正在为一个开源会议写一个应用程序。 最初每个与会者将通过电子邮件或短信收到不同的链接,如 https://example.com/?token=FCCFC8BFA07643A1CA8015CBE74F5F17 然后用这个链接打开app,我们就可以通过令牌知道用户是哪个与会者。 Firebase在2016年发布了新的I/O动态链接功能,为用户提供了更好的体验。 我曾经尝试过,但是我找不到任何方法来
这件事我已经绞尽脑汁好几个星期了。我有麻烦得到一个自定义密码重置,让用户重置他们的应用程序内的密码。 到目前为止,我能够做到以下几点: 发送密码重置电子邮件。 当用户单击该链接时,如果安装了应用程序,请打开该应用程序,并将其引导到正确的activity。 确认我的动态链接放入浏览器后将重定向到我的网站。 确认在Android Studio内部测试时,我的动态链接会将用户重定向到正确的activit
我直接在web界面中生成了一个新的动态链接。这基本上将用于每个人,或者这是我的希望。让我们将该链接称为link.some-app.com/email-link。然后,我将其设置为指向https://some-app-123f.firebaseapp.com/__/auth/action。去第一个带我去第二个,到目前为止一切都很好。这些链接只是打开网页,而不是应用程序,也没有中间页面。 我可以用li
我有一个SpringBoot(1.5.6),带有SpringSecurity(4.2)和ThymeLeaf应用程序,允许用户重置密码。所有html页面都在src/resources/templates中。基本流程是: > 用户提供用户名(通过resetPage.html) 凭证已清除 生成令牌并通过电子邮件发送到用户名电子邮件 用户单击电子邮件中的url将重定向到重置密码页面(changePass
我正在使用firebase来验证我的android应用程序中的用户。我在登录窗口中为用户提供了一个重置密码的选项。当用户点击按钮,它发送电子邮件成功。然而,当用户点击链接时,它总是显示 “请重置密码。重置密码的请求已过期,或链接已被使用” 2016年8月31日更新 我与firebase支持取得了联系,看起来API键有一些bug。如果更改浏览器API密钥,则不会更新。现在这个bug已经修复,重置密码
问题内容: 我正在使用Spring Data JPA进行项目。我在数据库中有一个表作为my_query。 我想创建一个将字符串作为参数的方法,然后将其作为数据库中的查询执行。 方法: 例如,当我通过 那么它应该在数据库级别运行该查询。 存储库类如下。 但是,它没有按我预期的那样工作。它给出以下错误。 还有什么其他方法可以实现这个目标。提前致谢 问题答案: 您可以参数化的唯一部分是在子句中使用的值。