Twitter 从黑莓发送推文——在模拟器中工作,但不在设备上工作
我正在黑莓Twitter集成上工作,在Twitter上发布消息 该应用程序在模拟器中运行良好,但在设备上运行时出现异常 这是我每次在设备上运行应用程序时遇到的例外情况{ OAuth_IO_异常 我做了一些研究,发现了一种在设备上设置正确日期时间的解决方案,但它仍然不起作用 这是我的密码:Twitter 从黑莓发送推文——在模拟器中工作,但不在设备上工作,twitter,oauth,blackberry,Twitter,Oauth,Blackberry,我正在黑莓Twitter集成上工作,在Twitter上发布消息 该应用程序在模拟器中运行良好,但在设备上运行时出现异常 这是我每次在设备上运行应用程序时遇到的例外情况{ OAuth_IO_异常 我做了一些研究,发现了一种在设备上设置正确日期时间的解决方案,但它仍然不起作用 这是我的密码: import com.kc.twitter.activity.TweetToFriend; import com.twitterapime.rest.Credential; import com.twitter
import com.kc.twitter.activity.TweetToFriend;
import com.twitterapime.rest.Credential;
import com.twitterapime.xauth.Token;
import com.twitterapime.xauth.ui.OAuthDialogListener;
import com.twitterapime.xauth.ui.OAuthDialogWrapper;
import net.rim.device.api.browser.field2.BrowserField;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.container.MainScreen;
public class TwitterScreen extends MainScreen {
private final String CONSUMER_KEY = "{redected}";
private final String CONSUMER_SECRET = "{redected}";
private final String CALLBACK_URL = "http://kingdomconnectng.net/redirect.php";
private LabelField _labelStutus;
public static OAuthDialogWrapper pageWrapper = null;
private ShowAuthBrowser showAuthBrowserScreen;
private String adminMessage;
public String adminMessages[];
boolean done=false;
Credential c ;
TweetToFriend tw;
public static StoreToken _tokenValue;
public static boolean isTweetPosted=false;
public static boolean isTweeterScreen =false ;
public TwitterScreen(final String adminMessage)
{
this.adminMessage=adminMessage;
isTweeterScreen = true ;
showAuthBrowserScreen = new ShowAuthBrowser();
_tokenValue = StoreToken.fetch();
/*if(_tokenValue.token.equalsIgnoreCase("nothing"))
{*/
showAuthBrowserScreen.doAuth(null);
UiApplication.getUiApplication().pushScreen(showAuthBrowserScreen);
/*}
else
{
final Token t = new Token(_tokenValue.token, _tokenValue.secret,
_tokenValue.userId, _tokenValue.username);
Credential c = new Credential(CONSUMER_KEY, CONSUMER_SECRET, t);
TweetToFriend tw=new TweetToFriend();
boolean done=tw.doTweet(adminMessage, c);
if(done==true){
Dialog.alert("Tweet posted.");
UiApplication.getUiApplication().invokeLater(new Runnable(){
public void run(){
UiApplication.getUiApplication().popScreen();
}
});
isTweetPosted=true;
}
else{
Dialog.alert("Tweet not posted.");
UiApplication.getUiApplication().invokeLater(new Runnable(){
public void run(){
UiApplication.getUiApplication().popScreen();
}
});
isTweetPosted=true;
}
}*/
}
class ShowAuthBrowser extends MainScreen implements OAuthDialogListener
{
BrowserField b = new BrowserField();
public ShowAuthBrowser()
{
//if(isTweetPosted==false){
UiApplication.getUiApplication().invokeLater(new Runnable(){
public void run(){
UiApplication.getUiApplication().popScreen();
}
});
//}
_labelStutus = new LabelField("KingdomConnect App" );
//add(_labelStutus );
add(b);
pageWrapper = new BrowserFieldOAuthDialogWrapper(b,CONSUMER_KEY,CONSUMER_SECRET,CALLBACK_URL,this);
pageWrapper.setOAuthListener(this);
}
public void doAuth( String pin )
{
try
{
if ( pin == null )
{
pageWrapper.login();
}
else
{
this.deleteAll();
add(b);
pageWrapper.login(pin);
}
}
catch ( Exception e )
{
final String message = "Error loggin Twitter: " + e.getMessage();
Dialog.alert( message );
}
}
public void onAccessDenied(String response ) {
System.out.println("Access denied! -> " + response );
updateScreenLog( "Acceso denegado! -> " + response );
}
public void onAuthorize(final Token token) {
UiApplication.getUiApplication().invokeLater(new Runnable(){
public void run(){
UiApplication.getUiApplication().popScreen();
}
});
final Token myToken = token;
_tokenValue = StoreToken.fetch();
_tokenValue.token = myToken.getToken();
_tokenValue.secret = myToken.getSecret();
_tokenValue.userId = myToken.getUserId();
_tokenValue.username = myToken.getUsername();
_tokenValue.save();
UiApplication.getUiApplication().invokeLater( new Runnable() {
public void run() {
try{
deleteAll();
c = new Credential(CONSUMER_KEY, CONSUMER_SECRET, myToken);
tw = new TweetToFriend();
/*done=tw.doTweet("KingdomConnect App: "+adminMessage, c);
if(done == true)
{
Dialog.alert( "Buzz posted successfully." );
close();
}
*/
prepareMessage(adminMessage);
}catch(NullPointerException e){
}catch(Exception e){
}
}
});
}
public void onFail(String arg0, String arg1) {
updateScreenLog("Error authenticating user! -> " + arg0 + ", " + arg1);
}
}
//TWEET METHOD
public void tweet(String message){
done=tw.doTweet("KingdomConnect: "+message, c);
/*if(done == true){
Dialog.alert( "Shared successfully." );
close();
} */
}
//PREPARE MESSAGE TO TWEET
public void prepareMessage(String msg){
int charLimit = 120;
int _msgSize = msg.length();
int i=0;
int parts = _msgSize/124;
try {
if(_msgSize > charLimit){
int temp1=0,temp2=charLimit;
while(i<parts+1){
String data = null;
if(i==parts){
data = msg.substring(temp1, _msgSize);
}else{
data = msg.substring(temp1, temp2);
temp1=temp2;
temp2=temp2+charLimit;
}
i++;
tweet(data);
}
Dialog.alert( "Shared successfully." );
}else{
tweet(msg);
//System.out.println("Data:======================"+msg);
}
}catch (Exception e) {
System.out.println("e = "+e);
}
}
private void updateScreenLog( final String message )
{
UiApplication.getUiApplication().invokeLater( new Runnable() {
public void run() {
_labelStutus.setText( message );
}
});
}
}
import com.kc.twitter.activity.TweetToFriend;
导入com.twitterapime.rest.Credential;
导入com.twitterapime.xauth.Token;
导入com.twitterapime.xauth.ui.OAuthDialogListener;
导入com.twitterapime.xauth.ui.OAuthDialogWrapper;
导入net.rim.device.api.browser.field2.BrowserField;
导入net.rim.device.api.ui.ui应用程序;
导入net.rim.device.api.ui.component.Dialog;
导入net.rim.device.api.ui.component.LabelField;
导入net.rim.device.api.ui.container.main屏幕;
公共类TwitterScreen扩展了主屏幕{
私有最终字符串CONSUMER_KEY=“{redected}”;
私有最终字符串CONSUMER_SECRET=“{redected}”;
私有最终字符串回调_URL=”http://kingdomconnectng.net/redirect.php";
私人LabelField_labelStutus;
公共静态OAuthDialogWrapper pageWrapper=null;
私人ShowAuthBrowser ShowAuthBrowser屏幕;
私有字符串消息;
公共字符串adminMessages[];
布尔完成=假;
证书c;
TweetToFriend tw;
公共静态StoreToken _tokenValue;
公共静态布尔值isTweetPosted=false;
公共静态布尔值isTweeterScreen=false;
公共TwitterScreen(最终字符串adminMessage)
{
this.adminMessage=adminMessage;
isTweeterScreen=true;
showAuthBrowserScreen=新的ShowAuthBrowser();
_tokenValue=StoreToken.fetch();
/*if(_tokenValue.token.equalsIgnoreCase(“nothing”))
{*/
showAuthBrowserScreen.doAuth(空);
UiApplication.getUiApplication().pushScreen(showAuthBrowserScreen);
/*}
其他的
{
最终令牌t=新令牌(_tokenValue.Token,_tokenValue.secret,
_tokenValue.userId,_tokenValue.username);
凭证c=新凭证(消费者密钥、消费者密钥、t);
TweetToFriend tw=新的TweetToFriend();
布尔值done=tw.doTweet(adminMessage,c);
如果(完成==真){
警告(“推特发布”);
UiApplication.getUiApplication().invokeLater(新的Runnable()){
公开募捐{
UiApplication.getUiApplication().popScreen();
}
});
isTweetPosted=true;
}
否则{
警告(“推特未发布”);
UiApplication.getUiApplication().invokeLater(新的Runnable()){
公开募捐{
UiApplication.getUiApplication().popScreen();
}
});
isTweetPosted=true;
}
}*/
}
类ShowAuthBrowser扩展MainScreen实现OAuthDialogListener
{
BrowserField b=新BrowserField();
公共浏览器()
{
//if(isTweetPosted==false){
UiApplication.getUiApplication().invokeLater(新的Runnable()){
公开募捐{
UiApplication.getUiApplication().popScreen();
}
});
//}
_labelStutus=新LabelField(“KingdomConnect应用程序”);
//添加(_labelStutus);
添加(b);
pageWrapper=new BrowserFieldOAuthDialogWrapper(b,消费者密钥,消费者密钥,回调URL,this);
setOAuthListener(this);
}
公共无效doAuth(字符串pin)
{
尝试
{
if(pin==null)
{
pageWrapper.login();
}
其他的
{
这是deleteAll();
添加(b);
pageWrapper.login(pin);
}
}
捕获(例外e)
{
最后一个字符串message=“Error loggin Twitter:+e.getMessage();
对话框。警报(消息);
}
}
拒绝访问时的公共无效(字符串响应){
System.out.println(“拒绝访问!->”+响应);
updateScreenLog(“Acceso denegado!->”+响应);
}
授权时的公共无效(最终令牌){
UiApplication.getUiApplication().invokeLater(新的Runnable()){
公开募捐{
UiApplication.getUiApplication().popScreen();
}
});
最终令牌myToken=令牌;
_tokenValue=StoreToken.fetch();
_tokenValue.token=myToken.getToken();
_tokenValue.secret=myToken.getSecret();
_tokenValue.userId=myToken.getUserId();
_tokenValue.username=myToken.getUsername();
_tokenValue.save();
UiApplication.getUiApplication().invokeLater(新的Runnable()){
公开募捐{
试一试{
deleteAll();
c=新凭证(消费者密钥、消费者密钥、myToken);
tw=新的TweetToFriend();
/*done=tw.doTweet(“KingdomConnect应用程序:”+adminMessage,c);
如果(完成==真)
{
警告(“Buzz已成功发布”);
close();
}
*/
准备消息(adminMessage);