2010-03-02 3 views
0

네 명의 정사각형 oauth에 대해 좋은 Java API를 사용하는 사람이 있습니까? 스레드로부터 안전 한 무언가를 찾고 있습니까?네 스퀘어 용 OAuth API

건배,

답변

1

나는 foursquare4j를 사용하여 시작하지만 성공적으로 포 스퀘어 API에 서명 호출을 호출하기 전에 필요한 마지막 단계 인 액세스 토큰을 검색 할 수 할 수 없습니다. 그래서 signpost을 사용하여 인증 비트를 통과하고 액세스 토큰과 비밀을 얻은 다음 foursquare4j를 사용하여 API를 매우 멋진 객체 모델로 캡슐화했습니다. 푯말이나 foursquare4j가 본질적으로 스레드로부터 안전한지 여부는 알 수 없습니다. 포럼에서 해당 질문을 할 수 있습니다. 다음은 앱 인증에 사용하는 코드의 평평한 버전입니다. Play 프레임 워크를 사용하고 있습니다. - authorize()는 초기 인증 요청을 받고 oauth()는 사용자가 액세스를 허용 한 후에 Foursquare가 리디렉션되는 곳입니다.

public class Foursquare extends Controller { 

    static final String FOURSQUARE_OAUTH_REQUEST_TOKEN = "http://foursquare.com/oauth/request_token"; 
    static final String FOURSQUARE_OAUTH_ACCESS_TOKEN = "http://foursquare.com/oauth/access_token"; 
    static final String FOURSQUARE_OAUTH_AUTHORIZE = "http://foursquare.com/oauth/authorize"; 
    static final String CONSUMER_KEY = "N4FKW2GFLMU1UGR3DDQYE4IGJQRGID1JFXYPJS3XFLZN3EU6"; 
    static final String CONSUMER_SECRET = "DDGHBF25J3RJDD4N4QC2CMRF8YMA1CG94OGFRPTY4RQNLMVH"; 


    // Handle Request for foursquare Authorization 
    public static void authorize() throws OAuthMessageSignerException, OAuthNotAuthorizedException, OAuthExpectationFailedException, OAuthCommunicationException { 

     oauth.signpost.OAuthProvider provider = new DefaultOAuthProvider(FOURSQUARE_OAUTH_REQUEST_TOKEN, FOURSQUARE_OAUTH_ACCESS_TOKEN,FOURSQUARE_OAUTH_AUTHORIZE); 
     oauth.signpost.OAuthConsumer consumer = new DefaultOAuthConsumer(CONSUMER_KEY,CONSUMER_SECRET); 
     String authURL; 

     authURL = provider.retrieveRequestToken(consumer,""); 

     String tokenSecret = consumer.getTokenSecret(); 
     session.put("secret", tokenSecret); 
     redirect(authURL); 
    } 

    // Handle call back from foursquare after user Accepts 
    public static void oauth() throws IOException, OAuthMessageSignerException, OAuthNotAuthorizedException, OAuthExpectationFailedException, OAuthCommunicationException { 

     oauth.signpost.OAuthProvider provider = new DefaultOAuthProvider(FOURSQUARE_OAUTH_REQUEST_TOKEN, FOURSQUARE_OAUTH_ACCESS_TOKEN,FOURSQUARE_OAUTH_AUTHORIZE); 
     oauth.signpost.OAuthConsumer consumer = new DefaultOAuthConsumer(CONSUMER_KEY,CONSUMER_SECRET); 
     String secret = session.get("secret"); 
     String pinCode = params.get("oauth_token"); 
     consumer.setTokenWithSecret(pinCode, secret); 
     provider.retrieveAccessToken(consumer, pinCode); 

     // Get the access token and secret 
     String token = consumer.getToken(); 
     String tokenSecret = consumer.getTokenSecret(); 

     // Set foursquare4j Credentials 
     foursquare4j.type.Credentials credentials = new Credentials(); 
     credentials.setTokenSecret(tokenSecret); 
     credentials.setAccessToken(token); 

     foursquare4j.oauth.OAuthConsumer newConsumer = new OAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); 

     foursquare4j.oauth.FoursquareOAuthImpl fs = new FoursquareOAuthImpl(newConsumer, credentials); 

     try { 
      // Get last 50 checkins 
      Checkins checkins = fs.history("50", ""); 

      render(checkins); 
     } catch (FoursquareException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

DefaultOAuthProvider 및 DefaultOAuthConsumer의 생성자 매개 변수에 몇 가지 변경 사항이 있습니까? –

0

안녕하세요 앤드류 나는 OAuth를 통해 Foursquare와 (과) 대화하기 위해 멋진 멋진 Play Framework를위한 모듈을 설정하는 작업을 거의 마쳤습니다.

내 블로그 http://geeks.aretotally.in 또는 Github https://github.com/feliperazeek/playframework-foursquare에서 진행 상황을 확인할 수 있습니다.

Foursquare는 OAuth 1을 OAuth 2에 대한 찬성으로 곧 해제하기 때문에 조심하십시오.