0

javafxを備えた組み込みブラウザを使用してユーザーを認証したい。Twitterから提供されたPIN(文字列)を取得できますが、AccesTokenを作成しようとすると、正しく作成されません。(トークンまたはtokenSecretを取得できません。どちらもnullです)。

これが私のコードです:

public static void main(String[] args)
    {
    Application.launch(args);
    }

@Override
public void start(Stage primaryStage) throws Exception
    {
    primaryStage.setTitle("WebView test");

    WebView browser = new WebView();

    engine = browser.getEngine();

    twitter = new TwitterFactory().getInstance();
    twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);

    requestToken = twitter.getOAuthRequestToken();

    String url = requestToken.getAuthorizationURL();


    engine.load(url);

    engine.getLoadWorker().stateProperty().addListener(new ChangeListener<State>()
        {

            public void changed(ObservableValue ov, State oldState, State newState)
                {
                if (newState==State.SUCCEEDED && engine.getLocation().equals("https://api.twitter.com/oauth/authorize"))
                    {
                     String pin = engine.getDocument().getDocumentElement().getElementsByTagName("code").item(0).getTextContent();
                     printAccesToken(pin);
                    }
                }

        });

    StackPane sp = new StackPane();
    sp.getChildren().add(browser);

    Scene root = new Scene(sp);

    primaryStage.setScene(root);
    primaryStage.show();
    }



private void printAccesToken(String pin)
    {
    AccessToken accessToken = null;

    try
        {
        accessToken = twitter.getOAuthAccessToken(requestToken, pin);
        }
    catch (TwitterException e)
        {
        e.printStackTrace();
        }
    System.out.println(accessToken.getToken());

    }

/*------------------------------------------------------------------*\
|*                          Attributs Private                       *|
\*------------------------------------------------------------------*/
private WebEngine engine;
private Twitter twitter;
private RequestToken requestToken;
private static final String CONSUMER_KEY = "xxx";
private static final String CONSUMER_SECRET = "xxx";

私はtwitter4jが提供するコード例に基づいていますが、まったく同じことをしていると言えますが、取得した文字列のみがキーボードから入力されておらず、ブラウザーから直接取得しています...

http://twitter4j.org/en/code-examples.html

例7に基づく

4

1 に答える 1

0

Twitter APIは、ピンを画像形式で返します。stringまたはintのピンは提供しません。その。ユーザーにPINを手動で入力するように求めることができます。

于 2013-07-26T17:02:08.573 に答える