Witam, mam następującą sytuację:
Używam Twitter4J do OAutha Twitterowego i pobrania AccessTokena użytkownika gdy wyrazy zgodę na działanie aplikacji.
Jako, że URL do autoryzacji ustalam w jednym kontrolerze, a autoryzację przeprowadzam w innym to zadeklarowałem mój obiekt w sesji za pomocą scope = session. Możliwym jest też, że ja źle rozumiem pojęcie "sesji" i gdy Tweeter mnie przekierowuje z powrotem to jest już inna sesja? Jeśli tak to proszę o radę jak to rozwiązać.
Wszystko poniżej:
Obiekt który ma być utrzymywany w sesji:
package org.server.model.socialmedia.apikeys.view;
import java.io.Serializable;
public class AuthInfo implements Serializable {
private String token;
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
private String tokenSecret;
public String getTokenSecret() {
return tokenSecret;
}
public void setTokenSecret(String tokenSecret) {
this.tokenSecret = tokenSecret;
}
private String authURL;
public String getAuthURL() {
return authURL;
}
public void setAuthURL(String authURL) {
this.authURL = authURL;
}
}
Definicja beanu:
<bean id="scopedAuthInfo" class="org.server.model.socialmedia.apikeys.view.AuthInfo" scope="session">
<aop:scoped-proxy/>
</bean>
Użycie w kontrolerze, który generuje URL i zapisuje tokeny który muszą być potem wykorzystane w drugim kontrolerze:
@Autowired
AuthInfo scopedAuthInfo;
@RequestMapping(value = "/ProfileSocialMedia", method = RequestMethod.GET)
public String ProfileSocialMedia(HttpSession session, Model model)
{
try {
AuthInfo tempInfo = authService.getAuthInfo();
scopedAuthInfo.setToken(tempInfo.getToken());
scopedAuthInfo.setTokenSecret(tempInfo.getTokenSecret());
model.addAttribute("twitterAuthUrl", tempInfo.getAuthURL());
} catch (AuthorizationLinkGenerationException ex) {
Logger.getLogger(UserProfileSocialMediaController.class.getName()).log(Level.SEVERE, null, ex);
}
return "UserProfileSocialMedia";
}
Drugi kontroler:
@Autowired
AuthInfo scopedAuthInfo;
@RequestMapping(value = "/TwitterSuccessAuth")
public String TwitterFinishAuthorize(HttpServletRequest request)
{
String verifier = request.getParameter("oauth_verifier");
try {
List<ApiKeyView> tokens = authService.getAuthorizedApiKeys(scopedAuthInfo.getToken(), scopedAuthInfo.getTokenSecret(), verifier);
for (ApiKeyView singleApiKey : tokens)
System.out.println(singleApiKey.getKeyName() + " : " + singleApiKey.getValueKey());
} catch (AuthorizationFailedException ex) {
return "Twitter/TwitterFailedAuth";
}
return "Twitter/TwitterSuccessfulAuth";
}
Niestety w drugim kontrolerze za każdym razem dostaję null w :
scopedAuthInfo.getToken(), scopedAuthInfo.getTokenSecret()
Pewnie to jakiś głupi błąd, ale nie potrafię sobie poradzić.
Za wszelką pomoc podziękowania