Parse 서비스를 활용하면서 사용자가 Facebook을 통해 앱에 로그인하고 Facebook 정보를 사용하여 입력란을 채우도록 허용하려고했습니다. Parse 's Cloud Code를 사용하여 클라이언트 쪽 코드를 가능한 간단하게 만듭니다. 그러나 구름 코드를 사용하여 Username 및 Email Address 필드를 Parse.User
으로 설정하려고하면 Parse.Cloud
에서 약간의 대화가 나옵니다. 인앱에서 실행할 때 다음과 같은 오류가 발생합니다. 사용자 이름 기능을 제거 할 때클라우드 코드 및 PFFacebookUtils로 이메일/사용자 이름 재정의
[Error]: Can't modify username in the before save trigger (Code: 141, Version: 1.6.1)
는, 나는 나타납니다
[Error]: Can't modify email in the before save trigger (Code: 141, Version: 1.6.1)
을 동일한 코드를 통해, 나는 또한 같은 방법을 사용하여 오류없이 firstName
및 lastName
을 설정하고있다. 아래는 사용 된 코드입니다.
[CLOUD CODE]
function pad(num, size){ return ('000000000' + num).substr(-size); }
Parse.Cloud.beforeSave(Parse.User, function (request, response) {
var token = request.object.get("authData").facebook.access_token
Parse.Cloud.httpRequest({
url: 'https://graph.facebook.com/v2.1/me?fields=first_name,last_name,email&access_token=' + token,
success: function(httpResponse) {
var responseData = httpResponse.data;
request.object.set("email", responseData.email) // <- Error Occurs Here
request.object.set("username", responseData.email.split("@")[0].concat(".", pad(Math.floor(Math.random()*10000),4))) // <- Error Occurs Here
request.object.set("firstName", responseData.first_name)
request.object.set("lastName", responseData.last_name)
response.success()
},
error: function(){
response.error("Something went wrong.")
}
})
})
[SWIFT CODE] 내가 만난 여기
@IBAction func loginWithFacebookButtonAction(sender: AnyObject){
loginWithFacebookButtonOutlet.setTitle("Logging In...", forState: UIControlState.Normal)
let permissions = ["public_profile", "user_friends", "email"]
PFFacebookUtils.logInWithPermissions(permissions, {
(user: PFUser!, error: NSError!) -> Void in
if user == nil {
println("Uh oh. The user cancelled the Facebook login.")
} else if user.isNew {
println("User signed up and logged in through Facebook!")
self.performSegueWithIdentifier("facebookToApp", sender: self)
} else {
println("User logged in through Facebook!")
self.performSegueWithIdentifier("facebookToApp", sender: self)
}
})
}
다른 문제가 발생하는 사용자는하지 않는 대신 response.success()
의 .save()
를 사용하려고 할 때 이 상황에서 문제가되는 것 같습니다.
감사합니다.
내가 같은 문제가, 당신이 되었나요? –
필자는 문제를 제거하고 입력의 무결성을 보장하기 위해 구문 분석이 하드 코딩 된 예방 조치라고 가정합니다. – schrismartin
@ChrisMartin 문제를 해결함으로써 문제를 해결할 수 없었습니까? 어떻게하면 그렇게 했습니까? – fatuhoku