2016-02-24 24 views
6

का उपयोग कर रहा उपयोगकर्ता का ईमेल पता पाने के लिए इस पोस्ट http://dev.office.com/code-samples-detail/2142 और रूबी पीछा ईमेल में हस्ताक्षर किए गए हो नहीं कर सकता। यहाँ कोड है:Office 365 REST API

# Parses an ID token and returns the user's email 
 
def get_email_from_id_token(id_token) 
 

 
    # JWT is in three parts, separated by a '.' 
 
    token_parts = id_token.split('.') 
 
    # Token content is in the second part 
 
    encoded_token = token_parts[1] 
 

 
    # It's base64, but may not be padded 
 
    # Fix padding so Base64 module can decode 
 
    leftovers = token_parts[1].length.modulo(4) 
 
    if leftovers == 2 
 
    encoded_token += '==' 
 
    elsif leftovers == 3 
 
    encoded_token += '=' 
 
    end 
 

 
    # Base64 decode (urlsafe version) 
 
    decoded_token = Base64.urlsafe_decode64(encoded_token) 
 

 
    # Load into a JSON object 
 
    jwt = JSON.parse(decoded_token) 
 

 
    # Email is in the 'preferred_username' field 
 
    email = jwt['preferred_username'] 
 
end

यह समारोह बहुत अच्छी तरह से काम किया है, मैं उपयोगकर्ता का ईमेल पता मिल सकती है। लेकिन आज, यह फ़ंक्शन अभी भी त्रुटि के बिना काम करता है लेकिन JSON में अब उपयोगकर्ता का ईमेल पता नहीं है।
कोई मेरी मदद कर सकते हैं? मैं उपयोगकर्ता का ईमेल पता प्राप्त करना चाहता हूं। धन्यवाद !

उत्तर

10

Azure वी 2 एप्लिकेशन मॉडल के लिए एक को तोड़ने परिवर्तन तैनात है, और आप अब और डिफ़ॉल्ट रूप से उपयोगकर्ता जानकारी नहीं मिलती है।

आप इसके बारे में सब यहाँ पढ़ सकते हैं: https://azure.microsoft.com/en-us/documentation/articles/active-directory-v2-preview-oidc-changes/, लेकिन संक्षेप में प्रस्तुत करने:

  • openid गुंजाइश इस्तेमाल किया आप उपयोगकर्ता के लिए प्रोफ़ाइल की मूलभूत जानकारी देने के लिए।

    # Scopes required by the app 
    SCOPES = [ 'openid', 
          'https://outlook.office.com/mail.read' ] 
    
    :
  • कि OpenID मानक के साथ लाइन में नहीं था
  • Azure की आवश्यकता के लिए आप उस जानकारी

कि नमूने के लिए तक पहुँच प्राप्त इस बिट खोजने के लिए profile गुंजाइश अनुरोध है कि बदला

और के लिए इसे बदल:

# Scopes required by the app 
SCOPES = [ 'openid', 
      'profile', 
      'https://outlook.office.com/mail.read' ] 
+0

तेजी से उत्तर के लिए धन्यवाद। मैं कल कंपनी आने पर कोशिश करूंगा। –

+0

काम किया। धन्यवाद ! –

+0

हाय हम एपीआई का उपयोग कर रहे हैं कैलेंडर घटनाओं ने कहा घटना से संबद्ध ईमेल खींचते हैं और फिर करने के लिए। क्या हमें इसे पाने के लिए अब एक भुगतान खाते के लिए साइन अप करना है? –

2

प्रोफ़ाइल जोड़ें और अपने दायरे में ईमेल:

SCOPES = [ 'openid', 'प्रोफ़ाइल', 'ईमेल', 'https://outlook.office.com/mail.read']

+0

काम से पूछे बिना जानकारी प्राप्त करने की बात कर रहा था। धन्यवाद ! –

+0

अगर मैं mail.read मैं उपयोगकर्ताओं की प्रोफ़ाइल जानकारी प्राप्त करने में सक्षम नहीं कर रहा हूँ का उपयोग न, मैं मेल अनुमति पढ़ने के लिए पूछना चाहता हूँ न – Diego