2012-12-18 17 views
11

मैंने एक उल्का ऐप बनाया जो उपयोगकर्ताओं को फेसबुक का उपयोग करके साइन ऑन करने की अनुमति देता है। ऐसा करने के लिए, मैं खातों-यूई और अकाउंट्स-फेसबुक पैकेज का उपयोग कर रहा हूं। यह ठीक काम करता है।मैं मेटर में खातों-फेसबुक का उपयोग कर उपयोगकर्ता का ईमेल पता कैसे प्राप्त करूं?

साइन इन करने के बाद मैं उपयोगकर्ता के ईमेल पते को कैसे पुनर्प्राप्त करूं? मैं समझता हूं कि इसके लिए विशेष अनुमति की आवश्यकता है, और इसलिए मैंने फेसबुक डेवलपर्स साइट पर ऐप सेटिंग्स में "उपयोगकर्ता & मित्र की अनुमति" के रूप में email जोड़ा।

Accounts.ui.config({ 
    requestPermissions: { 
    facebook: ['email'], 
    }, 
    passwordSignupFields: 'USERNAME_AND_EMAIL' 
}); 

जैसी उम्मीद थी, जब फेसबुक का उपयोग पर मेरे ऐप संकेतों में से एक उपयोगकर्ता, इसे सही ढंग से उनका ईमेल पता साझा करने के लिए पूछते हैं: उल्का प्रलेखन के बाद, मैं भी Account.ui.config इस तरह की स्थापना की। लेकिन मैं इसे कैसे प्राप्त करूं? उपयोगकर्ता दस्तावेज़ में केवल _id और profile.name है।

+0

जब 'का उपयोग करके खातों-facebook', आप उन अनुमतियों के साथ' खातों-ui' विन्यस्त करने की जरूरत नहीं है - डिफ़ॉल्ट रूप से ईमेल और मूल जानकारी का अनुरोध किया जाता है। 'passwordSignupFields' का उपयोग केवल नियमित खातों के लिए किया जाता है, न कि फेसबुक के लिए। – Rahul

उत्तर

9

फेसबुक उपयोगकर्ता का ईमेल पता [userDocument].services.facebook.email में संग्रहीत किया गया है, जो क्लाइंट को प्रकाशित नहीं है, लेकिन Meteor.methods और Meteor.call का उपयोग कर सर्वर से या क्लाइंट से एक्सेस किया जा सकता है।

+2

और आप उदाहरण के लिए सर्वर पर ईमेल फ़ील्ड प्रकाशित कर सकते हैं। 'Meteor.publish (" facebook_email ", फ़ंक्शन() {वापसी Meteor.users.find ({_ id: this.userId}, {फ़ील्ड: {'services.facebook.email': 1}});});', गोपनीयता उपयोगकर्ताओं को रोकने के लिए उस उपयोगकर्ता के लिए केवल उपयोगकर्ता के ईमेल को क्लाइंट को प्रकाशित करने का ख्याल रखना। – Rahul

+0

क्या कोई फेसबुक पिक्चर पाने के लिए सिंटैक्स जानता है? मैंने निम्नलिखित भाग्य की कोशिश की, और इसमें कोई भाग्य नहीं है: 'Meteor.users.find ({_ id: this.userId}, {फ़ील्ड: {' services.facebook.picture.data.url ': 1}}); ' – AbigailW

0

यह ग्राहक प्रोफ़ाइल उपयोगकर्ता ऑब्जेक्ट पर फेसबुक प्रोफाइल जानकारी जोड़ देगा।

Accounts.onCreateUser (options, user) ->  

    if options.profile 
     user.profile = options.profile 

     # get profile data from Facebook 
     result = Meteor.http.get "https://graph.facebook.com/me", { 
        params: access_token: user.services.facebook.accessToken} 

     if !result.error && result.data 
      #if successfully obtained facebook profile, save it off 
      #the user can access the profile object on the client 
      user.profile.facebook = result.data; 

    return user 
सर्वर साइड facebook.accesstoken पहुँचा जा सकता है पर

... इसलिए इसका इस्तेमाल पूर्ण अमेरिकन प्लान जानकारी प्राप्त करने और ग्राहक उपयोगकर्ता वस्तु में सहेजने के लिए ..

पिंग एक Meteor.user () अब एफबी जानकारी प्राप्त करने के लिए कंसोल में।

न लगता है कि यह ग्राहक पर अमेरिकन प्लान की जानकारी होने के मामले में वास्तव में सबसे अच्छा अभ्यास है ..

+0

इसे इस तरह से (बॉक्स सोचने से बाहर, बीटीडब्ल्यू) से आप मेटियर की प्रकाशन प्रणाली को बाधित कर रहे हैं, जो शायद नीचे जाने का एक अच्छा मार्ग नहीं है क्योंकि आपका कोड कम अनुमानित होगा। उल्का-अनुशंसित दृष्टिकोण के लिए जेडब्ल्यूएस का जवाब देखें। – Rahul

+0

इसे खातों-फेसबुक दस्तावेज़ों में जोड़ा जाना आवश्यक है। – steveinatorx

संबंधित मुद्दे

 संबंधित मुद्दे