package weibo4j.examples;
package weibo4j.examples;
import java.io.StringReader;
import java.util.HashMap;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import weibo4j.Status;
import weibo4j.Weibo;
import weibo4j.WeiboException;
import weibo4j.http.AccessToken;
import weibo4j.http.HttpClient;
import weibo4j.http.PostParameter;
import weibo4j.http.RequestToken;
import weibo4j.http.Response;
public class WebOAuth {
public static String CONSUMER_KEY = "2299894210";//你的新浪应用key 缺省是"jivejdon"的public static String CONSUMER_SECRET ="191b3411c5f126176b98e1be26b02233";
public static String SINA_USERID ="你的新浪微博用户名";
public static String SINA_PASSWD ="你的新浪微博密码";
public static RequestToken request(String backUrl) {
try {
System.setProperty("weibo4j.oauth.consumerKey", CONSUMER_KEY);
System.setProperty("weibo4j.oauth.consumerSecret", CONSUMER_SECRET);
Weibo weibo = new Weibo();
RequestToken requestToken = weibo.getOAuthRequestToken(backUrl);
System.out.println("Got request token.");
System.out.println("Request token: "+ requestToken.getToken());
System.out.println("Request token secret: "+ requestToken.getTokenSecret());
return requestToken;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static AccessToken requstAccessToken(RequestToken requestToken, String verifier) {
try {
System.setProperty("weibo4j.oauth.consumerKey", CONSUMER_KEY);
System.setProperty("weibo4j.oauth.consumerSecret", CONSUMER_SECRET);
Weibo weibo = new Weibo();
AccessToken accessToken = weibo.getOAuthAccessToken(requestToken.getToken(), requestToken.getTokenSecret(), verifier);
System.out.println("Got access token.");
System.out.println("access token: "+ accessToken.getToken());
System.out.println("access token secret: "+ accessToken.getTokenSecret());
return accessToken;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void update(AccessToken access, String content) {
try {
Weibo weibo = new Weibo();
weibo.setToken(access.getToken(), access.getTokenSecret());
Status status = weibo.updateStatus(content);
System.out.println("Successfully updated the status to ["+ status.getText() +"].");
} catch (WeiboException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
RequestToken requestToken = request("xml");
HttpClient http = new HttpClient();
PostParameter[] postParameters = new PostParameter[] { new PostParameter("oauth_callback","xml"), new PostParameter("userId", SINA_USERID),
new PostParameter("passwd", SINA_PASSWD) };
Response response = http.get(requestToken.getAuthorizationURL());
response = http.post(requestToken.getAuthorizationURL(), postParameters);
Weibo weibo = new Weibo();
System.out.print("www"+ response.asString());
StringReader reader = new StringReader(response.asString());
InputSource inputSource = new InputSource(reader);
Map map = readXML(inputSource);
AccessToken accessToken = requstAccessToken(requestToken, (String) map.get("oauth_verifier"));
update(accessToken,"测试一下");
}
public static Map readXML(InputSource inputSource) {
Map map = new HashMap();
try {
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse(inputSource);// normalize text representationdoc.getDocumentElement().normalize();
System.out.println("Root element of the doc is "+ doc.getDocumentElement().getNodeName());
map.put("oauth_token", getValue(doc,"oauth_token"));
map.put("oauth_verifier", getValue(doc,"oauth_verifier"));
System.out.println(" oauth_token="+ getValue(doc,"oauth_token"));
System.out.println(" oauth_token="+ getValue(doc,"oauth_verifier"));
} catch (Exception err) {
System.out.println(" "+ err.getMessage());
}
return map;
}
public static String getValue(Document doc, String name) {
String ret ="";
NodeList listOfPersons = doc.getElementsByTagName(name);
for (int s = 0; s < listOfPersons.getLength(); s++) {
Node firstPersonNode = listOfPersons.item(s);
Element firstPersonElement = (Element) firstPersonNode;
ret = firstPersonElement.getTextContent();
}// end of for loop with s varreturn ret;
}
}