애플 리 케 이 션 과 소 셜 시스템 의 상호작용 - spring social 소개

4162 단어 springFacebookSocial
필요: 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 인 터 페 이 스 를 스스로 실현 해 야 합 니 다.

좋은 웹페이지 즐겨찾기