2013-04-26 35 views
5

Tôi đang sử dụng parse.com làm phụ trợ cho ứng dụng của mình, nó cho phép người dùng đăng nhập thông qua tài khoản facebook hoặc twitter của mình. Ngoài ra nó có tính năng để liên kết twitter/facebook với tài khoản trước đó của mình.Parse.com PFUser Liên kết tài khoản twitter và facebook?

Đây là vấn đề:

Nếu một thông tin đăng nhập người dùng thông qua facebook tài khoản mới PFUser mình được tạo ra trên đám mây. Nếu cùng một người dùng đăng nhập lại thông qua tài khoản twitter khác, PFUser sẽ được tạo trên đám mây. Bây giờ, nếu người dùng muốn liên kết tài khoản facebook của mình với tài khoản twitter của mình, parse.com trả lời bằng "tài khoản twitter này đã được kết nối với người dùng khác".

Làm cách nào để hợp nhất hai số PFUsers vào đây? Ai có thể đề nghị tôi một cách tiếp cận để giải quyết vấn đề này?

+0

https://parse.com/questions/merging-pfusers –

+0

Cách được đề xuất ở đây sẽ chỉ cho phép một người dùng trên mỗi thiết bị. Tôi không muốn điều đó. Bất kỳ đề xuất nào khác? – Ashwani

Trả lời

3

tiếc thay, có vẻ như nó không phải là có thể có một tài khoản Facebook hoặc Twitter liên quan đến nhiều hơn một PFUser. Ngoài ra, có vẻ như không thể hợp nhất thêm hai mục PFUser nữa - Xem Parse's answer here.

Thay vào đó, bạn có thể giữ dữ liệu trên bảng PFUser cho mục đích ủy quyền và giữ phần còn lại của dữ liệu trong lớp Parse mới và chuyên dụng (nói userData, được trỏ bởi mục PFUser).

Trong ý nghĩa đó, bạn sẽ có thể sử dụng nhiều mục nhập PFUser trỏ đến cùng một mục nhập userData. Vì vậy nếu bạn có một mục PFUser trước đây có liên quan đến một tài khoản Twitter cụ thể trong phần phụ trợ Parse, tốt nhất bạn nên đăng nhập người dùng vào PFUser cụ thể đó, và sau đó trỏ mục nhập đó vào mục nhập userData trước đó của bạn.

4

Nếu không thấy bất kỳ mã nào, có vẻ như bạn đang gọi số PFTwitterUtils logInWithBlock khi cố liên kết tài khoản twitter. Đó sẽ là cách tiếp cận sai vì nó sẽ tạo một PFUser mới thay vì sử dụng PFUser tồn tại được tạo bằng cách đăng nhập bằng facebook.

Thay vào đó, những gì bạn sẽ muốn làm là sử dụng phương thức PFTwitterUtils để liên kết PFUser hiện tại với tài khoản twitter. The Parse documentation hiển thị mã sau để thực hiện điều đó.

PFUser *user = [PFUser currentUser]; 
if (![PFTwitterUtils isLinkedWithUser:user]) { 
    [PFTwitterUtils linkUser:user block:^(BOOL succeeded, NSError *error) { 
     if ([PFTwitterUtils isLinkedWithUser:user]) { 
      NSLog(@"Woohoo, user logged in with Twitter!"); 
     } 
    }]; 
} 
+0

Tôi xin lỗi nhưng bạn đã cho tôi sai ở đây, tôi đã sử dụng cùng một mã mà bạn đã đăng. Sự cố xảy ra khi tôi cố gắng liên kết tài khoản twitter (trước đây đã kết nối với một PFUser khác) với tài khoản hiện tại của tôi. Nó ném lỗi rằng tài khoản twitter này đã được kết nối với một số người dùng khác. Làm sao tôi có thể giải quyết việc này? – Ashwani

4

Bạn có thể làm một điều đó là:

khi bạn liên kết người dùng hiện hành với một bất kỳ tài khoản Facebook/Twitter, bạn cần hủy liên kết người dùng tại một số thời điểm. giả sử khi bạn đăng xuất, bạn cần kiểm tra xem người dùng hiện tại có được liên kết với Facebook/Twitter không?

nếu người dùng hiện tại của bạn được liên kết với bất kỳ người dùng khác mà bạn cần phải bỏ liên kết để bạn một lần nữa có thể liên kết người sử dụng Facebook/Twitter với bất kỳ người dùng khác, Như thế này

Đối với người sử dụng Facebook:

if([PFFacebookUtils isLinkedWithUser:[PFUser currentUser]]){ 

       [PFFacebookUtils unlinkUserInBackground:[PFUser currentUser] block:^(BOOL Success,NSError *unlinkError){ 
        if(!unlinkError){ 
         // User unlinked 
        }else{ 
         // Erro while unlink user 
        } 
       }]; 
      } 

Đối với Twitter sử dụng:

if([PFTwitterUtils isLinkedWithUser:[PFUser currentUser]]){ 

       [PFTwitterUtils unlinkUserInBackground:[PFUser currentUser] block:^(BOOL Success,NSError *unlinkError){ 
        if(!unlinkError){ 
         // unlink user 
        }else{ 
         // Error while unlink 
        } 
}]; 
} 
Các vấn đề liên quan