2014-09-18 2 views
1

내가 플라스크 - 오픈 ID 작업을 얻으려고 노력하지만,이 기능문제 3

oid.try_login(openid, ask_for=['email', 'fullname', 'nickname']) 
를 사용할 때 발생

ValueError: Unicode strings with encoding declaration are not supported. Please use bytes input or XML fragments without declaration. 

에 로그인을 시도 할 때이 오류를 타격 유지하고있다

이 함수가 사용되는 곳이다 :

@app.route('/login', methods=['GET', 'POST']) 
@oid.loginhandler 
def login(): 
    """Does the login via OpenID. Has to call into `oid.try_login` 
    to start the OpenID machinery. 
    """ 
    # if we are already logged in, go back to were we came from 
    if g.user is not None: 
     app.logger.info('logged-in: ' + oid.get_next_url()) 
     return redirect(oid.get_next_url()) 
    if request.method == 'POST': 
     openid = request.form.get('openid_identifier') 
     if openid: 
      app.logger.info(request.form) 
      app.logger.info('logging-in: ' + oid.get_next_url()) 
      return oid.try_login(openid, ask_for=['email', 'fullname', 
                'nickname']) 
    app.logger.info('not-logged-in: ' + oid.get_next_url()) 
    return render_template('login.html', next=oid.get_next_url(), 
          error=oid.fetch_error()) 

을 실제로 플라스크 - 오픈 ID가 사용 LXML에 문제가 될 것으로 보인다 :

File "C:\Python33\lib\site-packages\openid\yadis\etxrd.py", line 69, in parseXRDS 
    element = ElementTree.XML(text) 
    File "lxml.etree.pyx", line 3012, in lxml.etree.XML (src\lxml\lxml.etree.c:67876) 
    File "parser.pxi", line 1781, in lxml.etree._parseMemoryDocument (src\lxml\lxml.etree.c:102435) 

저는 github에서 몇 가지 예제 프로젝트를 시도했지만 모두 동일한 문제가 있습니다. Flask-openid를 Python 3에서 사용할 수있는 방법이 있습니까?

답변

0

나는 단지 플라스크를 직접 배우기 때문에 많은 도움이되지 않습니다.

그러나 저자 인해 파이썬 2와 3 사이에서 유니 코드 처리의 차이로 우리는이 방법의 두 가지 다른 버전을 제공해야한다는

주를 언급 http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-v-user-logins

를보십시오.

그는 내가 완전히 잘못 될 수있는 str 대신 unicode

def get_id(self): 
    try: 
     return unicode(self.id) # python 2 
    except NameError: 
     return str(self.id) # python 3 

의 사용! 어떤 경우에는 미안해, 가치가있는 시도.

0

단순한 문자열 그 이상입니다. Python3과 호환되지 않는 오래된 python-openid 패키지를 기반으로합니다. 특히 Python3 용 python-openid의 새 버전이 있습니다.

https://pypi.python.org/pypi/python3-openid/3.0.1

이전도 상세이 언급

같은 블로그 : http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-v-user-logins "불행하게도 버전 플라스크 - 오픈 ID의 1.2.1 (현재 공식 버전) 파이썬 잘 당신에 의해 어떤 버전을 3. 작동하지 않습니다 다음 명령을 실행하십시오. "