【发布时间】:2011-12-12 07:42:29
【问题描述】:
我想在 android 中集成foursquare。所以我尝试了两个例子。
第一个例子:
public class ActivityWebView extends Activity
{
private static final String TAG = "ActivityWebView";
/**
* Get these values after registering your oauth app at: https://foursquare.com/oauth/
*/
public static final String CLIENT_ID = "";
public static final String OAUTH_CALLBACK_SCHEME = "x-oauthflow-foursquare";
public static final String OAUTH_CALLBACK_HOST = "callback";
public static final String CALLBACK_URL = OAUTH_CALLBACK_SCHEME + "://" + OAUTH_CALLBACK_HOST;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webview);
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());
Log.v(TAG, "OAuth complete, token: [" + accessToken + "].");
Toast.makeText(ActivityWebView.this, "Token: " + accessToken, Toast.LENGTH_SHORT).show();
}
}
});
webview.loadUrl(url);
}
}
第二个例子:
http://blog.doityourselfandroid.com/2011/09/05/integrate-foursquare-android-application/
我在 Manifest 文件中添加了额外的代码
<activity android:name=".ActivityWebView" android:launchMode="singleTask" android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="x-oauthflow-foursquare" android:host="callback" />
</intent-filter>
</activity>
运行这两个应用程序后,身份验证成功,但显示带有此消息的 web 视图
you dont have permission to open this page x-oauthflow-foursquare://callback#access_token=DRWDP004zzAIZ1PPJEANEBFCM3NZJ1T414U2Z
所以请告诉我它是否需要添加任何额外的权限。请解决我的问题。
【问题讨论】:
标签: android integration foursquare