Twitter 从黑莓发送推文——在模拟器中工作,但不在设备上工作

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

我正在黑莓Twitter集成上工作,在Twitter上发布消息

该应用程序在模拟器中运行良好,但在设备上运行时出现异常

这是我每次在设备上运行应用程序时遇到的例外情况{

OAuth_IO_异常

我做了一些研究,发现了一种在设备上设置正确日期时间的解决方案,但它仍然不起作用

这是我的密码:

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);