【问题标题】:Re-sending email verification with Parse使用 Parse 重新发送电子邮件验证
【发布时间】:2017-07-12 21:20:12
【问题描述】:

我不确定我是否只是没有看到它,或者它不明显,但有没有适用于 Javascript SDK 或 REST API 的方法strong> 的 Parse 将验证电子邮件重新发送到已注册但由于某种原因未收到电子邮件的特定用户名/电子邮件?

【问题讨论】:

    标签: parse-platform parse-server


    【解决方案1】:

    几年前我遇到过这个问题,据我所知,没有办法直接通过 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);
        });
    

    【讨论】:

    • 即使在今天,我也无法在解析服务器中找到用于重新发送验证电子邮件的内置函数 :(
    【解决方案2】:

    Swift 5 和 iOS

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

    我将以下代码作为名为 verifyEmailRequest 的函数放置在我的 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 尚未实现此功能的任何原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-09
      • 2016-02-16
      • 1970-01-01
      • 2020-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多