使用Parse重新发送电子邮件验证

时间:2017-07-12 21:20:12

标签: parse-platform parse-server

我不确定我是否只是没有看到它或者它不是显而易见但是有没有办法可以 Javascript SDK REST API Parse将验证邮件重新发送到已注册且未出于任何原因收到电子邮件的特定用户名/电子邮件?

2 个答案:

答案 0 :(得分:3)

几年前我遇到过这个问题,据我记得,无法通过Parse SDK直接重新发送验证电子邮件。首次填充或更新电子邮件字段时,将自动触发电子邮件验证。

作为一种解决方法,我实施了一个云功能来覆盖电子邮件字段以触发重新发送。该函数将原始电子邮件地址值存储在临时变量中,然后使用随机生成的有效电子邮件地址替换电子邮件字段,然后立即使用原始电子邮件地址重新填充它。这用于从Parse服务器触发电子邮件重新发送。

代码是这样的:

    var user  = request.user;
    var email = user.get("Email");
    var randomMail = "objectID@domain.com"; //// random but valid Email address
    user.set("email", randomMail); /// Populate the field

    user.save(null, { useMasterKey: true }).then( function(user) {

        // The field was updated, recover the original Email address again
        user.set("email", email);
        return user.save(null, { useMasterKey: true });

    }).then( function(user) {

        response.success();

    }, function(error) {

        response.error(error);
    });

答案 1 :(得分:0)

Swift 5和iOS

对于仍在研究此问题的任何人。我正在使用此代码让服务器重新发送电子邮件验证。

以下代码作为一个名为VerificationEmailRequest的函数放置在User类中,但您可以将其放置在需要获取所需电子邮件地址的任何位置。

   let json: [String: Any] = ["email": "<email address here>"]
   let jsonData = try? JSONSerialization.data(withJSONObject: json)
    
   // create post request
   let url = URL(string: "\(Parse.currentConfiguration?.server ?? "")verificationEmailRequest")! //PUT Your URL
   var request = URLRequest(url: url)
   request.httpMethod = "POST"
   request.setValue("\(String(describing: jsonData?.count))", forHTTPHeaderField: "Content-Length")
   request.setValue("application/json", forHTTPHeaderField: "Content-Type")
   request.setValue(Parse.currentConfiguration?.applicationId, forHTTPHeaderField: "X-Parse-Application-Id")
   request.setValue(Parse.currentConfiguration?.clientKey, forHTTPHeaderField: "X-Parse-Client-Key")
   // insert json data to the request
   request.httpBody = jsonData
    
   let task = URLSession.shared.dataTask(with: request) { data, response, error in
    guard let data = data, error == nil else {
        print("error here: \(error?.localizedDescription ?? "No data")")
        return
    }
    
    let responseJSON = try? JSONSerialization.jsonObject(with: data, options: [])
    if let responseJSON = responseJSON as? [String: Any] {
        print("successful response: \(responseJSON)") //Code after Successfull POST Request
        
    }
 }
 
 task.resume()
                    

此代码使用来自Parse服务器的REST API发送验证邮件。 (请参见here

重要的是,我使用的是Parse.currentConfiguration进行身份验证,该身份验证是免费提供的,无论如何都需要使用Swift设置Parse。通常将其放置在SceneDelegate中。

我目前不知道以这种方式进行操作是否存在安全风险,因为我无法找到Parse尚未实现此功能的任何原因。