2011-12-10 3 views
0

저는 OpenID 컨셉을 처음 접했고 최근에 JanRain PHP 5 시스템을 사용하여 CodeIgniter에 OpenID Library을 구현하려고했습니다. 그러나Codeigniter OpenID 인증

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
    $config['openid_storepath'] = 'tmp'; 
    $config['openid_policy'] = 'test/policy'; 
    $config['openid_required'] = array('email'); 
    $config['openid_optional'] = array('fullname'); 
    $config['openid_request_to'] = 'test/check'; 
?> 

를, 내가 중 하나를 얻을 수없는 해요 :

오픈 ID 도서관 내 설정 파일은 다음과 같습니다 ... 구글과 야후 같은 사이트에서 간단한 데이터를 검색하는 동안 그러나 몇 가지 문제에 달렸다 'email'또는 'fullname'값. 다른 필드 (예 : '닉네임')를 채우려고했는데 결과도 나오지 않았습니다. 또한 JanRain docs에 지정된 다른 옵션 (예 : 'verifiedEmail'및 'preferredUsername')은 SREG 오류 만 발생 시켰습니다.

인증이 성공했는데 성공 메시지가 반환되었지만 요청한 정보에 어떻게 액세스 할 수 있습니까?

편집 :

http://www.{Site}.net/v2/test/check?janrain_nonce=2011-12-10T05:53:01ZFXVT02&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.mode=id_res&openid.return_to=http%3A%2F%2Fwww.{Site}.net%2Fv2%2Ftest%2Fcheck%3Fjanrain_nonce%3D2011-12-10T05%3A53%3A01ZFXVT02&openid.claimed_id=https%3A%2F%2Fme.yahoo.com%2Fa%2F{Token}%23df6f7&openid.identity=https%3A%2F%2Fme.yahoo.com%2Fa%2F{Token}&openid.assoc_handle={Handle}&openid.realm=http%3A%2F%2Fwww.{Site}.net%2Fv2%2F&openid.ns.pape=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fpape%2F1.0&openid.response_nonce=2011-12-10T05%3A53%3{Nonce Token}&openid.signed=assoc_handle%2Cclaimed_id%2Cidentity%2Cmode%2Cns%2Cop_endpoint%2Cresponse_nonce%2Creturn_to%2Csigned%2Cpape.auth_level.nist&openid.op_endpoint=https%3A%2F%2Fopen.login.yahooapis.com%2Fopenid%2Fop%2Fauth&openid.pape.auth_level.nist=0&openid.sig=CUa39ZjhGE8nWc7TMvbS8UFlwjQ%3D 

감사합니다 다음은 반환 URL입니다!

+0

참고. http://thinkmoult.com/2009/02/22/use-codeigniter-openid-library-to-integrate-openid/ –

+0

@RohanPatil 나는이 가이드를 읽고 몇 가지 코멘트를 읽고 있지만 아직 솔루션 ... – drfranks3

+0

@DFranks 나는 사용자가 yahoo/google로 리다이렉트 한 것으로 가정하고 로그인했으며 응용 프로그램으로 다시 리디렉션됩니다.이 경우 URL과 해당 매개 변수를 표시 할 수 있습니까? –

답변

0

나는 PHP에서 당신을 도울 수 없어요하지만 난 뭐하는 거지 나는 내가 야후 이것에 대한 AuthenticationUrl()을 만드는 오전 동안 야후

에 대한 작업 자바 개발하면 코드입니다 보여줄 수

StringBuilder sb = new StringBuilder(1024); 
     sb.append(endpoint.getUrl()) 
      .append(endpoint.getUrl().contains("?") ? '&' : '?') 
      .append(getAuthQuery(endpoint.getAlias())) 
      .append("&openid.return_to=") 
      .append(returnToUrlEncode) 
      .append("&openid.assoc_handle=") 

여기 내 getAuthQuery 함수입니다

String getAuthQuery(String axa) { 
     if (authQuery!=null) 
      return authQuery; 
     List<String> list = new ArrayList<String>(); 
     list.add("openid.ns=http://specs.openid.net/auth/2.0"); 
     list.add("openid.claimed_id=http://specs.openid.net/auth/2.0/identifier_select"); 
     list.add("openid.identity=http://specs.openid.net/auth/2.0/identifier_select"); 
     list.add("openid.mode=checkid_setup"); 
     list.add("openid.ns." + axa + "=http://openid.net/srv/ax/1.0"); 
     list.add("openid." + axa + ".mode=fetch_request"); 
     list.add("openid." + axa + ".type.email=http://axschema.org/contact/email"); 
     list.add("openid." + axa + ".type.fullname=http://axschema.org/namePerson"); 
     list.add("openid." + axa + ".type.language=http://axschema.org/pref/language"); 
     list.add("openid." + axa + ".type.firstname=http://axschema.org/namePerson/first"); 
     list.add("openid." + axa + ".type.lastname=http://axschema.org/namePerson/last"); 
     list.add("openid." + axa + ".type.gender=http://axschema.org/person/gender"); 
     list.add("openid." + axa + ".required=email,fullname,language,firstname,lastname,gender"); 
     String query = Utils.buildQuery(list); 
     authQuery = query; 
     return query; 
    } 

희망이 속성 교환을 사용하는 방법을 줄 것이다.

+0

대단히 감사합니다! 귀하의 코드 외에도,이 [대체] (http://codeigniter.com/wiki/A3M_Account_Authentication_and_Authorization)가 내 문제를 해결하는 데 도움이되었습니다. :) – drfranks3