菜鸟教程小白 发表于 2022-12-12 13:25:44

javascript - 使用 Cloud Code 和 PFFacebookUtils 覆盖电子邮件/用户名


                                            <p><p>在使用 Parse 服务时,我试图让用户跳过登录字段,方法是通过 Facebook 登录应用程序并使用 Facebook 信息填写字段。我正在使用 Parse 的 Cloud Code 来使 swift 客户端代码尽可能简单。但是,当我尝试使用云代码设置 <code>Parse.User</code> 的用户名和电子邮件地址字段时,我得到了来自 <code>Parse.Cloud</code> 的一些反馈。在应用内运行时出现以下错误。</p>

<pre><code>: Can&#39;t modify username in the before save trigger (Code: 141, Version: 1.6.1)
</code></pre>

<p>当删除用户名功能时,我收到:</p>

<pre><code>: Can&#39;t modify email in the before save trigger (Code: 141, Version: 1.6.1)
</code></pre>

<p>通过相同的代码,我还使用相同的方法设置 <code>firstName</code> 和 <code>lastName</code> 没有任何错误。下面是使用的代码。</p>

<p>[云代码]</p>

<pre><code>function pad(num, size){ return (&#39;000000000&#39; + num).substr(-size); }

Parse.Cloud.beforeSave(Parse.User, function (request, response) {
    var token = request.object.get(&#34;authData&#34;).facebook.access_token
    Parse.Cloud.httpRequest({
      url: &#39;https://graph.facebook.com/v2.1/me?fields=first_name,last_name,email&amp;access_token=&#39; + token,
      success: function(httpResponse) {
             var responseData = httpResponse.data;

             request.object.set(&#34;email&#34;, responseData.email) // &lt;- Error Occurs Here
             request.object.set(&#34;username&#34;, responseData.email.split(&#34;@&#34;).concat(&#34;.&#34;, pad(Math.floor(Math.random()*10000),4))) // &lt;- Error Occurs Here
             request.object.set(&#34;firstName&#34;, responseData.first_name)
             request.object.set(&#34;lastName&#34;, responseData.last_name)

             response.success()
      },
      error: function(){
            response.error(&#34;Something went wrong.&#34;)
      }
    })
})
</code></pre>

<p></p>

<pre><code>@IBAction func loginWithFacebookButtonAction(sender: AnyObject){
    loginWithFacebookButtonOutlet.setTitle(&#34;Logging In...&#34;, forState: UIControlState.Normal)
    let permissions = [&#34;public_profile&#34;, &#34;user_friends&#34;, &#34;email&#34;]
    PFFacebookUtils.logInWithPermissions(permissions, {
      (user: PFUser!, error: NSError!) -&gt; Void in
      if user == nil {
            println(&#34;Uh oh. The user cancelled the Facebook login.&#34;)
      } else if user.isNew {
            println(&#34;User signed up and logged in through Facebook!&#34;)
            self.performSegueWithIdentifier(&#34;facebookToApp&#34;, sender: self)
      } else {
            println(&#34;User logged in through Facebook!&#34;)
            self.performSegueWithIdentifier(&#34;facebookToApp&#34;, sender: self)
      }
    })
}
</code></pre>

<p>我在这里遇到的其他问题是当用户尝试使用 <code>.save()</code> 而不是 <code>response.success()</code> 时引起的,这似乎没有是这种情况下的问题。</p>

<p>非常感谢。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>似乎 <code>username</code> & <code>email</code> 不能在 <code>beforeSave</code> 触发器中更改,因为它们应该是唯一的</p>

<blockquote>
<p>Right now, the email field cannot be modified on a beforeSave because this field should be unique. If you were to use a value that another user is already using, this would result in an error that your beforeSave method would not be able to handle.</p>
</blockquote>

<p>引用:<a href="https://www.parse.com/questions/why-cant-i-modify-the-email-field-in-a-before-save-trigger" rel="noreferrer noopener nofollow">https://www.parse.com/questions/why-cant-i-modify-the-email-field-in-a-before-save-trigger</a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于javascript - 使用 Cloud Code 和 PFFacebookUtils 覆盖电子邮件/用户名,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/27643307/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/27643307/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: javascript - 使用 Cloud Code 和 PFFacebookUtils 覆盖电子邮件/用户名