2011-06-29 4 views
0

私はAndroid用のYMクライアントを開発しています。私はopenymsg0.5 APIを含んでいます。プログラムを実行すると、次のエラーが表示されます。Android用Openymsg

06-29 11:32:04.097: ERROR/InputThread(11206): org.openymsg.network.LoginRefusedException: Login Failed, unable to retrieve stage 2 url 
06-29 11:32:04.097: ERROR/InputThread(11206):  at org.openymsg.network.Session.yahooAuth16Stage2(Session.java:2048) 
06-29 11:32:04.097: ERROR/InputThread(11206):  at org.openymsg.network.Session.yahooAuth16Stage1(Session.java:1955) 
06-29 11:32:04.097: ERROR/InputThread(11206):  at org.openymsg.network.Session.receiveAuth(Session.java:1848) 
06-29 11:32:04.097: ERROR/InputThread(11206):  at org.openymsg.network.InputThread.processPayload(InputThread.java:139) 
06-29 11:32:04.097: ERROR/InputThread(11206):  at org.openymsg.network.InputThread.process(InputThread.java:129) 
06-29 11:32:04.097: ERROR/InputThread(11206):  at org.openymsg.network.InputThread.run(InputThread.java:71) 

これがメインのエラーです:

LoginRefusedException: Login Failed, unable to retrieve stage 2 url

この質問は前に頼まれましたが、私は私を助けてくれた答えを見つけることができます。誰もがこのエラーに対処する方法についての任意のアイデアを持っていますか?私はopenymsgのテストコードとコードベースを使い、すべてがうまくいっているようです。

私はただ、それはJavaアプリケーションとして正常に動作しますが、アンドロイドの一部として使用される場合、それは次のように.Iは、セッションを作成していますエラーログを与える確認

Session session = new Session(); 
session.addSessionListener(new SessionListenerClass()); 
try{ 
    session.login("username", "password"); 
    if (session!=null 
     && session.getSessionStatus()== SessionState.LOGGED_ON) 
    { 
     System.out.println("It logged on!!!!!!!"); 
    } 
} 

SessionListner:

public class SessionListenerClass extends SessionAdapter 
{ 

    @Override 
    public void messageReceived(SessionEvent event) 
    { 
     // TODO Auto-generated method stub 
     super.messageReceived(event); 
    } 

    @Override 
    public void notifyReceived(SessionNotifyEvent event) 
    { 
     // TODO Auto-generated method stub 
     super.notifyReceived(event); 
    } 

    @Override 
    public void newMailReceived(SessionNewMailEvent event) 
    { 
     // TODO Auto-generated method stub 
     super.newMailReceived(event); 
    } 

    @Override 
    public void errorPacketReceived(SessionErrorEvent event) 
    { 
     // TODO Auto-generated method stub 
     super.errorPacketReceived(event); 
    } 

    @Override 
    public void connectionClosed(SessionEvent event) 
    { 
     // TODO Auto-generated method stub 
     super.connectionClosed(event); 
    } 

} 
+0

デバイス/エミュレータがインターネット接続に対応していますか? Android Manifestでインターネット特権を宣言しましたか? –

+0

はい、デバイスは3Gを使用でき、私はを追加しました – Kavitha

+0

アンドロイドには何か特別なものがありますか?私のラップトップでは、通常のJavaプログラムと同じように上記のコードはsessionStatusを返しますが、アンドロイドではエラーが発生します – Kavitha

答えて

0

使用しているライブラリは、jYMSG -libraryに基づいています。

あなたのスローされた例外のドキュメント、LoginRefusedException読み取り:

Returns the status code given by the server. This will one of the values specified in StatusConstants. Values will be either STATUS_BADUSERNAME for an unknown account, or STATUS_BAD for a bad password (or other fault).

を、それは「他の何か」または単に間違ったユーザー名/パスワードだのであれば、あなたがチェックすることができます。


いいえ、この継ぎ目はライブラリのバグです。私はthisを見つけました。これは、プロジェクトのリーダーの1人がこの問題について知っていることを示しています。しかし、これがすぐに修正されるかどうかはわかりません。

また、プロジェクトに「アルファ」とマークされていることに気付く必要があります。私はこの問題を解決する新しいリリースのためにあなたが調整されていることを提案することができます。

+0

私はJavaアプリケーションと同じコードを試してみるとうまくいきます。私はそのライブラリのソースコードを使ってデバッグしています。yahooAuth16Stage2メソッドが例外をスローすることを確認しました。つまり、 – Kavitha

+0

から取得したレスポンスコードです。String loginLink = "https://login.yahoo.com/config/pwtoken_login?src=ymsgr&ts=&token=" +トークン; URL u =新しいURL(loginLink)。 URLConnection uc = u.openConnection(); uc.getResponseCodeはHTTP_OKである200の代わりに-1を返す – Kavitha

+0

'SessionListenerClass()'クラスからコードを表示できますか? –