我正在尝试允许我的 android 应用程序中的用户登录到他们的 google 帐户,以便我可以访问他们的联系人以创建朋友列表,并且我正在尝试使用 OAuth 来执行此操作。到目前为止,我已经形成了 URL 并创建了加载页面的 webview。我继续登录,但我不知道如何将 URL 中的代码分配给我活动中的代码值。我也不知道我的 Onpagestarted 方法是否正常工作
有人可以告诉我使用 OAuth2 向 google 进行身份验证的替代方法/技术,或者告诉我当前方式有什么问题,因为一旦我到达带有代码的页面,我的视图仍然是 WebView 而不是带有代码的 textview我想要吗?
在用户登录到我的 WebView 中的谷歌页面后,我想自动化整个过程,但到目前为止,我的代码一直卡在带有 Authcode 的页面上,这让我相信我的程序没有检测到 Authcode。
注意:我不想简单地使用登录到 Android 设备的帐户(除非用户显然选择输入相同的帐户)
这是 Activity 中的代码,我想在其中获取 Auth Code/Token 并为我的用户获取联系人,尽管我不介意在以后的活动中显示联系人。
WebView browser;
final String username = "gotsingh@gmail.com";
private myWebViewClient client;
String code;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_friends);
browser = (WebView) findViewById(R.id.webview);
client = new myWebViewClient();
WebSettings webSettings = browser.getSettings();
webSettings.setJavaScriptEnabled(true);
browser.setWebViewClient(client);
getAuthCode(client);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.add_friends, menu);
return true;
}
public void getAuthCode(myWebViewClient myClient){
browser.loadUrl(url4);
while (myClient.authCode!= null){
showCode(myClient);}
}
public void showCode(myWebViewClient myClient){
code = myClient.authCode;
TextView text = new TextView(this);
text.setText(code);
setContentView(text);
}
下面是我修改后的 WebViewClient 类
public class myWebViewClient extends WebViewClient{
boolean authComplete = false;
String authCode = null;
@Override public void onPageStarted(WebView view, String url, Bitmap favicon){
super.onPageStarted(view, url, favicon);
if (url.contains("?code=") && authComplete != true) {
int codeStart = url.indexOf("?code=")+6;
authCode = url.substring(codeStart);
Log.i("", "AUTHCODE : " + authCode);
authComplete = true;
System.out.println(authCode);
}else if(url.contains("error=access_denied")){
Log.i("", "ACCESS_DENIED_HERE");
authComplete = true;
}
}
}
另外,如果我能获得一些关于在 java 中执行 POST/GET 请求以从谷歌接收 JSON 数据的一般指导。我对 android 开发非常陌生,处理 html/http 请求的经验接近 0。