애플 리 케 이 션 과 소 셜 시스템 의 상호작용 - spring social 소개
해결 방안:
질문 1: spring social 페 이 스 북 만 사용 하기
1) 가방 다운로드http://www.springsource.org/spring-social/
2) oauth 2 로그 인하 여 영패 획득 문 제 를 해결 합 니 다. 방안 은 두 가지 가 있 습 니 다.
하 나 는 http Client 를 직접 사용 하여 접근 하 는 것 이 고, 다른 하 나 는 spring social 이 제공 하 는 구성 요 소 를 사용 하 는 것 입 니 다.
a. 링크 추가:
<a href="https://www.facebook.com/dialog/oauth?client_id=${facebook_client_id!}&redirect_uri=${facebook_redirect_uri!}&state=${facebook_login_uuid!}"><img src="${base}/img/facebook.png" /> </a>
메모: 이 경 로 를 직접 사용 하지 않 아 도 됩 니 다. spring social 은 Controller 를 제공 합 니 다. 기본 값 은 일부 경 로 를 자동 으로 설치 하지만 개인 적 으로 사용 하 는 것 을 권장 하지 않 습 니 다.이 < a > 경 로 는 action 에 숨 길 수 있 습 니 다. 서버 에서 http Client 를 사용 하여 접근 할 수 있 습 니 다. 테스트 하지 않 았 습 니 다. 직접 시도 하 십시오. spring 의 Controller 는 기본적으로 백 엔 드 에서 이 경 로 를 처리 합 니 다.
b. 위 창 에 페 이 스 북 로그 인 창 이 뜨 고 자신의 사용자 이름 계 정 으로 로그 인 한 후 서버 쪽 리 셋 경로 에서 code 를 가 져 오고 code 를 사용 하여 토 큰 을 바 꿉 니 다.
@Autowired
FacebookConnectionFactory factory;
String code = request.getParameter("code");
String state = request.getParameter("state");
String tokenResult;
try {
tokenResult = accessTokenFacebook(code);// httpClient
OAuth2Operations oauthOperations = factory.getOAuthOperations();// spring
AccessGrant accessGrant = oauthOperations.exchangeForAccess(code, Propertyholder.getContextProperty("facebook.redirect_uri"), null);
Connection<Facebook> connection = factory.createConnection(accessGrant);
Facebook facebook = connection.getApi();// facebook
ConnectionData connectionData=connection.createData();//
JSONObject tokenJson = (JSONObject) JSONValue.parse(tokenResult);
if (tokenJson != null) {
String accessToken = (String) tokenJson.get("access_token");
Long expiresIn = (Long) tokenJson.get("expires_in");// ( )
long currentTime = System.currentTimeMillis() / 1000;
long expiresTime = currentTime + expiresIn;// ( )
request.getSession().setAttribute("facebook_expires_time", expiresTime);
request.getSession().setAttribute("facebook_access_token", accessToken);
return "facebooktest.ftl";//
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (URISyntaxException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
private String accessTokenFacebook(String code) throws URISyntaxException, ClientProtocolException, IOException, ParseException{
String uri="https://graph.facebook.com/oauth/access_token?client_id="
+Propertyholder.getContextProperty("facebook.client_id")
+"&redirect_uri="+Propertyholder.getContextProperty("facebook.redirect_uri")
+"&client_secret="+Propertyholder.getContextProperty("facebook.client_secret")
+"&code="+code;
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(uri);
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
String str="";
if (entity != null) {
str=EntityUtils.toString(entity, "UTF-8");
}
return str;
}
메모: connectionData 는 다음 페 이 스 북 데 이 터 를 요청 할 때 다시 사용 할 수 있 도록 session 에 넣 을 수 있 습 니 다. 아래 와 request. getSession (). setAttribute ("facebook expires time", expires Time) 를 사용 하 는 것 이 목적 입 니 다.
문제 2: 트 위 터 등 여러 사회화 구성 요 소 를 통합 한다.주요 문 제 는 다 중 사용자 와 다 중 연결 데이터 재 활용 문 제 를 해결 하 는 것 이다.
spring 은 다양한 소 셜 네트워크 서비스 링크 를 만 들 고 관리 하 는 완벽 한 공장 류 를 제공 합 니 다. 만약 에 저장 관계 데이터 베이스 라면 spring 의 방안 으로 데이터베이스 에 직접 존재 할 수 있 습 니 다. 또한 2 급 캐 시 나 그래 픽 데이터 베 이 스 를 넣 을 수도 있 지만 spring 의 Connection Repository 인 터 페 이 스 를 스스로 실현 해 야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.