Android Foursquare accessToken: как получить accessToken из внутреннего класса? - PullRequest
0 голосов
/ 05 июля 2011

Как я могу получить accessToken из анонимного внутреннего класса ниже? когда я пытаюсь использовать accessToken вне класса, он отображается как ноль. Я попытался отобразить тост с accessToken сразу после закрытия внутреннего класса, и он просто отображается как ноль. Я хочу иметь возможность использовать accessToken в асинхронной задаче для получения некоторых данных. Как я могу сделать это?

public class main extends Activity {

        public static final String CALLBACK_URL = "url";
        public static final String CLIENT_ID = "id";

            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);

                String url =
                    "https://foursquare.com/oauth2/authenticate" + 
                        "?client_id=" + CLIENT_ID + 
                        "&response_type=token" + 
                        "&redirect_uri=" + CALLBACK_URL;

                // If authentication works, we'll get redirected to a url with a pattern like:  
                //
                //    http://YOUR_REGISTERED_REDIRECT_URI/#access_token=ACCESS_TOKEN
                //
                // We can override onPageStarted() in the web client and grab the token out.
                WebView webview = (WebView)findViewById(R.id.webView);
                webview.getSettings().setJavaScriptEnabled(true);
                webview.setWebViewClient( new WebViewClient() {
                    public void onPageStarted(WebView view, String url, Bitmap favicon) {
                        String fragment = "#access_token=";
                        int start = url.indexOf(fragment);
                        if (start > -1) {

                            // You can use the accessToken for api calls now.
                            String accessToken = url.substring(start + fragment.length(), url.length());
                            Toast.makeText(main.this, "Token: " + accessToken, Toast.LENGTH_SHORT).show();
                        }
                    }
                });
                webview.loadUrl(url);

            }
        }

1 Ответ

1 голос
/ 05 июля 2011
     String accessToken = 
         url.substring(start + fragment.length(), url.length());

Существует ваш токен доступа.

Вы можете передать его куда-нибудь еще в вашей программе.Вам нужно изменить внутренний класс, приведенный в примере, в соответствии с вашими потребностями.На данный момент он просто отображает токен в диалоговом окне.

...