0
A
답변
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
안녕하세요 앤드류 나는 OAuth를 통해 Foursquare와 (과) 대화하기 위해 멋진 멋진 Play Framework를위한 모듈을 설정하는 작업을 거의 마쳤습니다.
내 블로그 http://geeks.aretotally.in 또는 Github https://github.com/feliperazeek/playframework-foursquare에서 진행 상황을 확인할 수 있습니다.
Foursquare는 OAuth 1을 OAuth 2에 대한 찬성으로 곧 해제하기 때문에 조심하십시오.
DefaultOAuthProvider 및 DefaultOAuthConsumer의 생성자 매개 변수에 몇 가지 변경 사항이 있습니까? –