package net.dev123.oauth;
import static org.junit.Assert.assertNotNull;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import net.dev123.commons.ServiceProvider;
import net.dev123.commons.http.HttpMethod;
import net.dev123.commons.http.HttpRequestHelper;
import net.dev123.commons.http.HttpRequestMessage;
import net.dev123.commons.http.auth.NullAuthorization;
import net.dev123.commons.http.auth.OAuth2AuthorizeHelper;
import net.dev123.commons.oauth2.OAuth2.GrantType;
import net.dev123.commons.oauth2.OAuth2AccessToken;
import net.dev123.exception.LibException;
import net.dev123.exception.LibRuntimeException;
import net.dev123.mblog.sina.SinaErrorAdaptor;
import net.dev123.sns.TokenConfig;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.HttpResponseException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.util.EntityUtils;
import org.junit.Test;
public class OAuth2AuthorizeHelperTest {
@Test
public void testAuthorizationCode() {
OAuth2AccessToken accessToken = null;
try {
OAuth2AuthorizeHelper oauthHelper = new OAuth2AuthorizeHelper(ServiceProvider.Sina);
String authorzieUrl = oauthHelper.getAuthorizationUrl(GrantType.AUTHORIZATION_CODE, null);
System.out.println(authorzieUrl);
BareBonesBrowserLaunch.openURL(authorzieUrl);
String code = null;
while (null == code || code.trim().length() == 0) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Please Enter Authorization Code : ");
code = br.readLine();
}
accessToken = oauthHelper.getAccessTokenByAuthorizationCode(code, null);
//accessToken = oauthHelper.getAccessTokenByRefreshToken(accessToken.getRefreshToken(), null);
} catch (Exception e) {
e.printStackTrace();
}
assertNotNull(accessToken);
}
@Test
public void testImplicitGrant() {
OAuth2AccessToken accessToken = null;
try {
OAuth2AuthorizeHelper oauthHelper = new OAuth2AuthorizeHelper(TokenConfig.currentProvider);
String authorzieUrl = oauthHelper.getAuthorizationUrl(GrantType.IMPLICIT, null);
BareBonesBrowserLaunch.openURL(authorzieUrl);
String url = null;
while (null == url || url.trim().length() == 0) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Please Enter implicit Callback : ");
url = br.readLine();
}
accessToken = OAuth2AuthorizeHelper.retrieveAccessTokenFromFragment(url);
System.out.println(accessToken);
} catch (Exception e) {
e.printStackTrace();
}
assertNotNull(accessToken);
}
@Test
public void testImpl() throws LibException {
HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.POST, AUTHORIZE, new NullAuthorization(ServiceProvider.Sina));
httpRequestMessage.addParameter("userId", "raise007");
httpRequestMessage.addParameter("passwd", "cauc24097410");
httpRequestMessage.addParameter("action", "submit");
httpRequestMessage.addParameter("display", "wap1.2");
httpRequestMessage.addParameter("redirect_uri", "http://www.yibo.me/authorize/getAccessToken.do");
httpRequestMessage.addParameter("client_id", "834484950");
httpRequestMessage.addParameter("response_type", "token");
httpRequestMessage.addHeader("Referer", AUTHORIZE);
String response = HttpRequestHelper.execute(httpRequestMessage, new ResponseHandler<String>() {
public String handleResponse(final HttpResponse response) throws HttpResponseException, IOException {
StatusLine statusLine = response.getStatusLine();
HttpEntity entity = response.getEntity();
String responseString = (entity == null ? null : EntityUtils.toString(entity));
if (statusLine.getStatusCode() >= 300) {
LibRuntimeException apiException = SinaErrorAdaptor.parseError(responseString);
throw apiException;
}
return responseString;
}
});
System.out.println(response);
}
public static final String AUTHORIZE = "https://api.weibo.com/oauth2/authorize";
public static final String REDIRECT_URI = "https://api.weibo.com/oauth2/default.html";
}