xamarin WordPress REST API -发送重置密码链接

sh7euo9m  于 2022-12-07  发布在  WordPress
关注(0)|答案(4)|浏览(142)

我想从我的应用程序创建一个请求。(iOS和Android -用Xamarin编码)。

说明:

该请求应触发WordPress的action=lostpassword. -用户会收到一封电子邮件,重置他的浏览器密码。

用户将能够设置一个新的密码。WordPress发送一个链接到电子邮件-在那里用户必须验证,他改变了密码。有没有任何机会做到这一点的请求REST API。
也许有类似的想法?
我已经试过了:
1.在文档中提供了功能但对我无效的插件
1.手动调用带主体的wp-login.php?action=lostpassword
{“重定向到”:“”、“使用者登入”:“name@provider.de“、“wp-提交”:“新+密码”}

n53p2ov0

n53p2ov01#

创建自定义API

    • 网址**

https://yourdomain/api/forgot_password.php

    • 参数**

login:manoj.infoways@gmail.com
在根目录下创建api文件夹并创建forgot_password.php文件
forgot_password.php

<?php include '../wp-load.php';

$login = $_REQUEST['login']; 

if ( empty( $login ) ) {
    $json = array( 'code' => '0', 'msg' => 'Please enter login user detail' );
    echo json_encode( $json );
    exit;     
}

$userdata = get_user_by( 'email', $login); 

if ( empty( $userdata ) ) {
    $userdata = get_user_by( 'login', $login );
}

if ( empty( $userdata ) ) {
    $json = array( 'code' => '101', 'msg' => 'User not found' );
    echo json_encode( $json );
    exit;
}

$user      = new WP_User( intval( $userdata->ID ) ); 
$reset_key = get_password_reset_key( $user ); 
$wc_emails = WC()->mailer()->get_emails(); 
$wc_emails['WC_Email_Customer_Reset_Password']->trigger( $user->user_login, $reset_key );

$json = array( 'code' => '200', 'msg' => 'Password reset link has been sent to your registered email' );
echo json_encode( $json );
exit;

?>

请记住,login是参数名称。
对我来说100%有效,试试吧

iibxawm4

iibxawm42#

我想this应该能帮到你。
示例显示了wp_lostpassword_url()函数返回丢失密码的URL http://example.com/lostpassword/

add_filter( 'lostpassword_url', 'my_lost_password_page', 10, 2 );
function my_lost_password_page( $lostpassword_url, $redirect ) {
    return home_url( '/lostpassword/?redirect_to=' . $redirect );
}
jjjwad0x

jjjwad0x3#

您可以在function.php或任何其他地方(如custom plugin)使用此代码创建自定义端点

function custom_user_forget_password($request)
{
    $email = $request->get_param('email');

    $userdata = get_user_by('email', $email);

    if (empty($userdata)) {
        $userdata = get_user_by('login', $email);
    }

    if (empty($userdata)) {
        return __('User not found');
    }

    $user = new WP_User(intval($userdata->ID));
    $reset_key = get_password_reset_key($user);
    $wc_emails = WC()->mailer()->get_emails();
    $wc_emails['WC_Email_Customer_Reset_Password']->trigger($user->user_login, $reset_key);

    return __('Password reset link has been sent to your registered email.');

}
add_action('rest_api_init', function () {
    register_rest_route('custom/v1/', '/forget_password', array(
        'methods' => 'POST',
        'callback' => 'custom_user_forget_password',
    ));
});

那么您可以在任何需要的地方调用此端点的post请求(URL /wp-json/custom/v1/forget_password),如果用户存在,它将发送一个密码重置链接。

093gszye

093gszye4#

请检查这个答案,了解如何通过RESTful API和code for Flutter触发WordPress中的发送密码重置链接
https://stackoverflow.com/a/73467945/2218290

相关问题