2013-03-10 2 views
0

OAuth1을 통해 Linkedin에 인증하고 연결된 사용자의 연결 목록을 가져 오는 보안 사회를 사용하려고합니다.Securesocial, 인증 후 linkedin 요청을 호출하는 문제

인증은 정상적으로 작동하지만 사용자가 연결되면 요청을 호출하면 401 응답이 반환됩니다. 아마도 잘못하고있을 수도 있지만 잠재적 인 문제는 없습니다. 여기

는 securesocial 코드 내에서 제공하는 Java 데모 응용 프로그램에 추가하는 간단한 방법입니다 :

@SecureSocial.SecuredAction (authorization = WithProvider.class, params = {"linkedin"}) 
public static Result linkedinConnections(){ 
    Identity user = (Identity) ctx().args.get(SecureSocial.USER_KEY);   
    OAuth1Info oauthInfo = user.oAuth1Info().get(); 

    String url = "http://api.linkedin.com/v1/people/~/connections:(headline,first-name,last)?format=json"; 
    String consumerKey = SecureSocial.serviceInfoFor(user).key().key(); 
    String consumerSecret = SecureSocial.serviceInfoFor(user).key().secret(); 

    return async(
      WS.url(url) 
      .sign(
       new OAuthCalculator(
        new OAuth.ConsumerKey(consumerKey, consumerSecret), 
        new OAuth.RequestToken(oauthInfo.token().toString(), oauthInfo.secret().toString()) 
       ) 
      ) 
      .get() 
      .map(new Function<WS.Response, Result>() { 
       public Result apply(WS.Response response) { 
        System.out.println(response); 
        return ok(response.getStatusText()); 
       } 
      }) 
     ); 
} 

어떤 생각이

안부, 나빌 도움이 될 것입니다

내가 사용하는 시도하지 않은

답변

0

LinkedIn과 SecureSocial하지만 주어진 그

  • 인증 wi 일 SecureSocial는
  • 당신은 링크드 인 사용자
  • 당신의 자신의 방법은 항상 (무단) 401 오류를 가져옵니다

당신이 두 개의 서로 다른 액세스 수준을 혼합하는 것이 분명 보인다의 연결을 나열하고 싶습니다 작동합니다. SecureSocial에서 수행하는 인증에는 LinkedIn의 이름이나 메일 주소와 같은 기본 정보 만 필요합니다. 그런 다음 동일한 인증 토큰을 사용하여 LinkedIn 사용자 (연결)의 고급 정보에 액세스하려고합니다. 이것은 사용자가 자신의 연락처/연결이 아닌 기본 프로필에만 액세스 할 수있는 권한을 사용자에게 부여했기 때문에 LinkedIn에 의해 거부 (권한 없음)되었습니다.

사용자의 연결을 나열하기 위해 더 많은 권한을 얻으려면 SecureSocial에서 보낸 OAuth 인증 요청에 범위 정보를 추가해야한다고 생각합니다. 이는 스코프 정보를 추가하기 위해 모듈의 소스 파일을 편집해야 함을 의미합니다.

LinkedIn 범위 및 사용 권한은 https://developer.linkedin.com/documents/authentication을 참조하십시오. LinkedIn SecureSocial 코드는 https://github.com/jaliss/securesocial/blob/master/module-code/app/securesocial/core/providers/LinkedInProvider.scala을 참조하십시오.

희망이 도움이됩니다.