2013-05-10 49 views
64

Tôi muốn tạo người dùng từ thông tin đăng nhập Facebook của họ mà không cần sử dụng các cuộc gọi không có giấy tờ. Tôi không tin rằng nó có thể dựa trên việc thực hiện hiện tại của Thư viện Javascript Parse vì hai lý do đã biết:Làm thế nào để bạn tích hợp API Javascript Parse với Appcelerator và không sử dụng các cuộc gọi không có giấy tờ?

1. Việc triển khai thư viện hiện tại không hỗ trợ ứng dụng khách HTTP của Appcelerator. Tôi đã giải quyết vấn đề này bằng cách mở rộng phương thức ajax của thư viện Javascript Parse hiện có để sử dụng Appcelerator HTTP client.

http://www.clearlyinnovative.com/blog/post/34758524107/parse-appcelerator-titanium-the-easy-way

Hiện đã có khoảng 2K quan điểm trên boong tàu trượt Tôi tạo ra và về trên cùng một bài viết trên blog, vì vậy nó là khá rõ ràng với tôi người muốn điều này để làm việc.

2. Việc triển khai thư viện hiện tại giả định bạn đang tích hợp với thư viện Javascript của Facebook và thư viện đó không hoạt động với Appcelerator. Trong thực tế Appcelerator đã tích hợp Facebook trực tiếp vào khung làm việc nên không cần thư viện javascript. Tất cả thông tin cần thiết để liên kết tài khoản người dùng với Facebook có thể dễ dàng nhận được bằng cách sử dụng các cuộc gọi API mà các nhà phát triển Appcelerator đã quen thuộc.

Câu hỏi ban đầu đã bị xóa khỏi diễn đàn Hỗ trợ Parse vì vậy tôi đang tìm kiếm giải pháp từ một cộng đồng rộng lớn hơn.

Hi Aaron,

Đó không phải là hữu ích cho các nhà phát triển khác để thúc đẩy sử dụng không có giấy tờ API trong thư viện Parse như một cách giải quyết, vì vậy tôi đưa ra quyết định ngừng công bố nó. Tôi hiểu điều đó có thể hữu ích trong trường hợp cụ thể của bạn với Titan và bạn biết rõ về các tác động của việc sử dụng các API riêng tư, nhưng những người dùng khác có thể bỏ qua cảnh báo đó. Tôi hy vọng bạn hiểu.

Héctor Ramos Giải pháp kiến ​​trúc sư, Phân tích https://parse.com/help

Đây là mã đó là quá nguy hiểm để bị bỏ lại có thể nhìn thấy trên diễn đàn:

// setting auth data retrieved from Ti.Facebook login 
authData = { 
    "facebook" : { 
     "id" : Ti.Facebook.uid, 
     "access_token" : Ti.Facebook.accessToken, 
     "expiration_date" : expDate, // "format: yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" 
    } 
}; 

// Either way I resolved the problem, calling _handleSaveResult(true) on the returned user object, 
// I just dont think it should have been as difficult as it was 
// attempt to log the user in using the FB information 
var user = new Parse.User(); 
user.save({ 
    "authData" : authData 
}).then(function(_user) { 
    // force the user to become current 
    _user._handleSaveResult(true); //<-- this is the evil method I called 
    if (!_user.existed()) { 

     // add additional user information 
     var userInfo = { 
      "acct_email" : "[email protected]", 
      "acct_fname" : "Bryce", 
      "acct_lname" : "Saunders" 
     }; 
     return _user.save(userInfo); 
    } 
}).then(function(_user) { 

    alert('Hooray! Let them use the app now.'); 

}, function(error) { 
    alert(' ERROR: ' + JSON.stringify(error, null, 2)); 
}); 

Câu hỏi trên Appcelerator Forum

http://developer.appcelerator.com/question/152146/facebook-appcelerator-and-parse-integration-need-help

Câu hỏi về diễn đàn phân tích

https://parse.com/questions/how-do-you-integrate-the-parse-javascript-api-with-appcelerator-and-not-use-undocumented-calls

+0

Sự cố của bạn là gì? Có vẻ như bạn đã trả lời hoặc làm việc xung quanh tất cả các vấn đề. –

+0

nó được hỗ trợ và có thể thay đổi bất kỳ lúc nào với bản cập nhật cho thư viện parse.js –

+0

Gửi email cho nhân viên điều hành của họ chưa? Nó có vẻ như cho đến khi họ thay đổi các API được chính thức tiếp xúc và cung cấp một cách để điều này để làm việc, bạn đang bị mắc kẹt mà không có một "câu trả lời". –

Trả lời

3

Có lẽ phần này của một SDK mới hơn, nhưng có thể không phải bạn chỉ cần gọi:

Parse.FacebookUtils.logIn({ 
    "facebook": { 
    "id": "user's Facebook id number as a string", 
    "access_token": "an authorized Facebook access token for the user", 
    "expiration_date": "token expiration date of the format: yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" 
    }, 
    { 
     success : function(_user) {}, 
     error : function(_user, error) {} 
    } 
}; 

Nó không phải tài liệu trong hướng dẫn Javascript, nhưng nó được ghi chép lại trong phiên bản unminified của mã visa vie:

@param {String, Object} permissions The permissions required for Facebook 
log in. This is a comma-separated string of permissions. 
Alternatively, supply a Facebook authData object as described in our 
REST API docs if you want to handle getting facebook auth tokens 
yourself. 

Tôi đã cập nhật mã gốc để hỗ trợ SDK mới nhất mà tôi sẽ xuất bản trên Github.

Cảm ơn rất nhiều vì đã dẫn đầu nỗ lực này. Bài đăng gốc của bạn đã lưu tôi giờ.