2010-03-02 2 views
0

소비자의 complete() 메소드를 호출 할 때 "[openid identifier]를 발견 한 후 일치하는 끝 점이 없습니다"오류가 발생합니다.Python OpenID 오류 : [uri]를 (를) 발견 한 후 일치하는 끝점을 찾을 수 없습니다.

재미있는 점은 필자가 테스트 한 4 개의 OpenID 공급자 중에서 LiveJournal에서만 관찰 된 것입니다. 문제를 조사하고 수정하기 위해 어떤 단계를 제안 할 수 있습니까?

store = FileOpenIDStore("/path/to/store") 

def login(req, uri): 
    req.content_type = "text/html" 
    session = Session.Session(req) 
    consumer = Consumer(session, store) 
    auth = consumer.begin(uri) 
    util.redirect(req, auth.redirectURL("http://example.com", "http://example.com/authtest.py?sid=" + session.id())) 
    return 

def index(req, sid): 
    req.content_type = "text/html" 
    c = Consumer(Session.Session(req, sid), store) 
    args = req.args.split("&") 
    arg_dict = {} 
    for i in range(0, len(args)): 
     x, y = args[i].split("=") 
     arg_dict[x] = unquote(y) 
    v = c.complete(arg_dict, "http://example.com/authtest.py?" + req.args) 
    if v.status == 'failure': 
     return v.message 
    else: 
     return v.status 

답변

1

내가 조사 할 몇 가지 단계가 여기에 코드의 어떤 눈부신 오류를 볼 수 있지만하지 않습니다

  • oidutil.log에서 모든 출력이 있습니까? 기본적으로 stderr에 로그하지만 웹 서버가 stderr를 볼 수 없으면 로그 서버를 덮어 쓸 수 있습니다.

  • 모든 요청/응답을 캡처하십시오. TamperData과 같은 것을 사용하여 간접 요청/응답을 브라우저를 통해 전달하고이를 python-openid 배포본에서 contrib/openid-parse으로 보내면 좀 더 읽기 쉽도록 만들 수 있습니다.

  • python-openid 소스 배포판의 예제 소비자가 LJ 식별자로 작동합니까? 그렇다면 예제와 코드 간의 요청/응답의 차이점은 무엇입니까?

  • LJ 식별자에 구두점이 있습니까?

  • LJ는 테스트중인 유일한 OpenID 버전 1.x 공급자입니까? (아마, 왼쪽이 너무 많지 않기를 바랍니다.)

  • 인수 구문 분석은 urlparse.parse_qs 일 수 있지만 그게 실제로 문제가되는지는 잘 모르겠습니다. (그리고 반환 parse_qs {키 : [값 목록]}, Consumer.complete 예상하는 반면. {키 : 단일 값}, 당신이 다른 하나를 매핑해야하므로)

+0

내가 가진 oidutil.log 사용 openID 라이브러리가 LJ가 사용하는 것으로 보이는 OpenID 1.0을 확인하지 않는다는 것을 알았습니다. 1.0 처리를위한 코드가있을 것임에도 불구하고 1.1 만 확인합니다. 조사 중입니다. – dpq

+0

나는 그것을 고쳤다. http://trac.openidenabled.com/trac/ticket/162에 따라, consumer.py에서 _discoverAndVerify 메소드는 불일치가 발생할 경우 DiscoveryFailure를 발생시키기 때문에 986 행은'except (DiscoveryFailure, TypeURIMismatch) :'와 같이 보일 것입니다. 올바른 방향으로 나를 가리켜 주셔서 감사합니다 :) – dpq

+0

허. 고니는 그 티켓을'worksforme'으로 마감했습니다. 그리고 그것은 나에게도 효과가있다. 나는 거기에서 무슨 일이 일어나고 있는지 궁금해. – keturn