2012-08-09 4 views
1

나는 인증을 위해 spring-security-facebook 플러그인을 사용하고있다. 그것은 잘 작동합니다, 지금은 승인이 필요한 spring-social-facebook의 일부 기능을 사용하려고합니다. 내 컨트롤러에서 유효한 accessToken은 어디에서 얻을 수 있습니까 (FacebookTemplate 객체를 만들기 위해)?Grails spring-security-facebook plugin의 액세스 토큰

이 내가 플러그인을 사용하고 있습니다 방법은 다음과 같습니다

1) 나는 도메인 클래스, OAuthUser을 (하지 플러그인에서하지만 내 프로젝트) 2)는 FacebookAuthDaoImpl 3를 생성 한) 내가 편집 추가 상기 방법은 예에서, I는 I는 UID 상기 accessToken 설정 여기서

+ 사용자 (주 도메인 클래스 SecUser)의 인스턴스 및 (프로파일 정보를 정기적

+ 새로운 OAuthUser 세트 작성) (작성 생성 생성 된 주 사용자와 연결하십시오.

UPDATE 1 :

Boolean hasValidToken(OAuthUser user){ 
    def now= new Date() 

    if(now.after(user.accessTokenExpires)){ 
     return false 
    } else { 
     return true 
    } 
} 

void updateToken(OAuthUser user, FacebookAuthToken token){ 

    user.accessToken = token.accessToken 
    user.save() 
} 

String getAccessToken(OAuthUser user){ 
    return user.accessToken 
} 

을하지만 난 여전히 만료 된 AccessToken 있습니다 나는 나의 FacebookAuthDaoImpl 클래스에서 그 3 가지 방법을 추가했습니다.

+0

'user.accessTokenExpires'를 어디에서 업데이트하고 있습니까? 'hasValidToken'이 null이면 무엇을 반환합니까? –

+0

@IgorArtamonov 나는 만료일을 어디에서 얻을 수 있는지 알아 내려고하고있다. 샘플이 있습니까? – yeka

+0

무효 updateToken (OAuthUser 사용자, FacebookAuthToken 토큰) { 사용자 (BTW 나는 인증'FacebookAuthToken 토큰 = SecurityContextHolder.context.authentication \t token.accessToken = facebookAuthUtils.getAccessToken (token.code)'에서 accessToken을 얻는 방법을 알아 냈) .accessToken = token.acceessToken.accessToken user.accessTokenExpiration = = token.acceessToken.expireAt } –

답변

1

당신이 기본 DAO 사용하는 경우 :

이 그것은 Facebok 사용자에 대한 도메인 개체의 필드 accessToken에 저장되어 있습니다.

필드 이름이 accessToken 인 경우이 필드를 추가해야합니다 (String accessToken). 이상적으로 추가적인 필드가 있습니다 : Date accessTokenExpires. 그리고 두 필드 모두 자동으로 플러그인으로 채워집니다. token.accessToken.accessToken

  • create(FacebookAuthToken token) 패스 액세스 토큰 : 당신이 다음 자신의 DAO 구현을 만든 경우

    .

  • Boolean hasValidToken(F user), void updateToken(F user, FacebookAuthToken token)getAccessToken(F user) - 먼저 토큰 만료, 두 번째 업데이트 (토큰이 만료되면 호출 됨)를 확인하고 마지막 값은 현재 값을 다시 실행해야합니다.

당신이 말했듯이 당신은 DAO implentation을 소유하고 있습니다. 마지막 3 가지 방법을 어떻게 구현 했습니까?

+0

Igor, 이미 OAuthUser 도메인 클래스에 accessToken 필드가 있습니다. (accessTokenExpires 날짜 없음). 그것을 사용할 때 만료 된 액세스 토큰 예외가 발생합니다. – yeka

+0

다른 도메인을 사용하고있는 Facebook 사용자에게 제가 믿습니다. 다른 플러그인의 도메인 인 것 같습니다. oauth auth –

+0

예 @Igor, 내 주 사용자와 연결된 OAuthUser 도메인을 만들었습니다. – yeka