2011-10-22 47 views
1

我正在嘗試製作一個Android應用程序,該應用程序與Bodymedia數據API(它是一個感應您的身體活動級別的臂章)連接。我正在使用scribe oauth庫。我遇到的問題是函數「shouldOverrideUrlLoading」永遠不會被調用。使用抄寫員將Android應用程序連接到API

下面的代碼:

package com.android.fitapp; 

import org.scribe.builder.ServiceBuilder; 
import org.scribe.model.OAuthRequest; 
import org.scribe.model.Response; 
import org.scribe.model.Token; 
import org.scribe.model.Verb; 
import org.scribe.model.Verifier; 
import org.scribe.oauth.OAuthService; 

import android.app.Activity; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.View; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.TextView; 


public class VisWeight extends Activity { 
final static String API_KEY = "[key]"; 
final static String API_SECRET = "[secret]";  

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.oauth); 

    final OAuthService oauthService = new ServiceBuilder() 
    .provider(new BodyMediaAPI(API_KEY)) 
    .apiKey(API_KEY) 
    .apiSecret(API_SECRET) 
    .build(); 

    final Token requestToken = oauthService.getRequestToken(); 
    final String authURL = oauthService.getAuthorizationUrl(requestToken); 
    final TextView textView = (TextView)findViewById(R.id.textview); 
    final WebView webview = (WebView) findViewById(R.id.webview); 
    webview.setWebViewClient(new WebViewClient(){ 
     @Override 
     public boolean shouldOverrideUrlLoading (WebView view, String url) { 
      if(url.startsWith("http")){ 
      webview.setVisibility(View.GONE); 
      Uri uri = Uri.parse(url); 
      String verifier = uri.getQueryParameter("oauth_verifier"); 
      Verifier v = new Verifier(verifier); 

      Token accessToken = oauthService.getAccessToken(requestToken, v); 

      OAuthRequest req = new OAuthRequest(Verb.GET, "http://api.bodymedia.com/v1.0/goal/current?api_key=" + API_KEY); 
      oauthService.signRequest(accessToken, req); 
      Response response = req.send(); 
      textView.setText(response.getBody());   

      return true;    
      } 
     return super.shouldOverrideUrlLoading(view, url); 

     } 
    }); 

    webview.loadUrl(authURL); 
    } 
} 

任何想法是怎麼回事?

僅供參考,此代碼是根據http://schwiz.net/blog/2011/using-scribe-with-android/上提供的代碼(推測工作代碼)進行改編的,代碼通過抄寫器連接到Twitter API。

+0

請參閱下面的答案。 – remagu

回答

-1

想通了。問題是我沒有啓用Javascript。一旦運行,就有一些小問題需要解決。如果您想查看完整的更正後的代碼,請隨時通知我。

+3

您可以發送完整的工作代碼嗎? – hacker

相關問題