【问题标题】:Connecting an android application to an API using scribe使用 scribe 将 android 应用程序连接到 API
【发布时间】:2011-12-13 01:37:03
【问题描述】:

我正在尝试制作一个与 Bodymedia 数据 API 连接的 Android 应用程序(它是一个可以感知您的身体活动水平的臂章)。我正在使用 scribe oauth 库。我遇到的问题是永远不会调用函数“shouldOverrideUrlLoading”。

代码如下:

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/ 上提供的(可能工作的)代码,该代码演示了通过 scribe 连接到 twitter API。

【问题讨论】:

    标签: android api oauth scribe


    【解决方案1】:

    想通了。问题是我没有启用Javascript。一旦运行,有一些小问题需要修复。如果您想查看完整的更正代码,请随时给我发消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-17
      • 2015-06-05
      • 2015-07-24
      相关资源
      最近更新 更多