2

我正在为 BB 构建一个 Twitter 应用程序,它连接到 Twitter 并代表用户发帖。使用 TWITTER API ME 1.8 库和 oAuth 身份验证方法。这是代码:

    class ShowAuthBrowser extends MainScreen implements OAuthDialogListener {
    BrowserField b = new BrowserField();

    public ShowAuthBrowser() {

        _authManager = new VerticalFieldManager(NO_VERTICAL_SCROLL
                | NO_VERTICAL_SCROLLBAR);
        _pinManager = new HorizontalFieldManager(NO_VERTICAL_SCROLL
                | NO_VERTICAL_SCROLLBAR);
        authButton = new ButtonField("OK");
        authPin = new TextField(Field.EDITABLE);
        _labelStatus = new LabelField("Your app is being authorized...");
        _authManager.add(_labelStatus);
        _authManager.add(b);

        _pinManager.add(authButton);
        _pinManager.add(authPin);

        pageWrapper = new BrowserFieldOAuthDialogWrapper(b, CONSUMER_KEY,
                CONSUMER_SECRET, CALLBACK_URL, this);

        pageWrapper.setOAuthListener(this);

        add(_pinManager);
        add(_authManager);

        authButton.setChangeListener( new FieldChangeListener( ) {
            public void fieldChanged( Field field, int context ) {
                if( field == authButton ) {
                       doAuth(authPin.getText());
                }
            }
        } );
    }

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

        System.out.println("In authorize: "+token);
        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() {
                deleteAll();
                Credential c = new Credential(CONSUMER_KEY,
                        CONSUMER_SECRET, myToken);
                TweetToFriend tw = new TweetToFriend();
                String message = "Test Tweet...";
                boolean done = false;
                done = tw.doTweet(message, c);
                if (done == true) {
                    Dialog.alert("Tweet succusfully...");
                    close();
                }
            }
        });

    }

    public void onFail(String arg0, String arg1) {
        updateScreenLog("Error authenticating user! -> " + arg0 + ", "
                + arg1);
    }
}

private void updateScreenLog(final String message) {
    UiApplication.getUiApplication().invokeLater(new Runnable() {

        public void run() {
            _labelStatus.setText(message);
        }
    });
}

这里onAuthorize()永远不会被调用,而是onFail()每次都被调用并且oAuth_io_exception抛出一个 , General socket 错误。

谁能帮帮我。

谢谢。

4

0 回答 0