Abrufen von OpenID AX-Attributen von Google / Yahoo in Rails

Ich benutze das Rails Pluginopen_id_authentication in meiner App. Dies funktioniert für MyOpenID. Bei der Authentifizierung bei Google kann ich die E-Mail-Adresse jedoch nicht als Teil der erforderlichen Attribute abrufen.

Soweit ich weiß, ignoriert Google Anfragen nach sreg-Attributen und lauscht nur am AX-Schema nach der E-Mail-Adresse.

Hier ist mein Code:

     def open_id_authentication(openid_url)

       #google only responds to AX for email, so we must provide that also
       authenticate_with_open_id(openid_url, :required => [:nickname, :email, 'http://axschema.org/contact/email']) do |result, identity_url, registration|
        if result.successful?    
         @user = User.find_or_initialize_by_identity_url(identity_url)
         if @user.new_record?            
             unless registration['email'] || registration['http://axschema.org/contact/email']          
                 failed_login "Your OpenID provider didn't send us an email address."
                 return
              end

          #some providers (like Google) won't send a nick name.  We'll use email instead for those
          nick = registration['nickname']
          nick |= registration['email']
          nick |= registration['http://axschema.org/contact/email']

          email = registration['email'];
          email |= registration['http://axschema.org/contact/email']

          @user.login = nick
          @user.email = email
          @user.save(false)
     end
     self.current_user = @user
     successful_login
    else
       failed_login result.message
    end
   end

Ich verstehe, dass ich die E-Mail-Adresse (sowohl sreg als auch AX) als sendeerforderlich und ich sollte in der Lage sein, sie aus dem zu ziehenregistration Instanz, die mit der Antwort übergeben wird.

Wenn ich mich bei Google anmelde, wird die E-Mail-Adresse als "t" zurückgegeben.

Behandle ich das falsch? Wie kann ich die E-Mail-Adresse des Nutzers von Google erhalten? Muss ich durch andere Reifen springen, um Yahoo zu unterstützen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage