0

AndroidアプリのユーザーがGoogleアカウントにログインできるようにして、友達リストを作成するために連絡先にアクセスできるようにしようとしています.OAuthを使用してこれを実行しようとしています. これまでのところ、URL を形成し、ページをロードする webview を作成しました。サインインに進みますが、コードを URL からアクティビティのコード値に割り当てる方法がわかりません。また、Onpagestarted メソッドが正しく機能しているかどうかもわかりません

OAuth2を使用してGoogleで認証するための代替方法/手法を誰かに教えてもらえますか、コードを含むページに到達すると、私のビューはWebViewのままで、コードを含むテキストビューではなく、現在の方法の問題は何かを教えてもらえますか?私はそれをしたいですか?

ユーザーが WebView で Google ページにサインインした後、プロセス全体を自動化したいのですが、これまでのところ、コードが Authcode を含むページでスタックし続けているため、Authcode がプログラムによって検出されていないと思われます。

注: Android デバイスにサインインしているアカウントを単純に使用したくありません (明らかにユーザーが同じアカウントを入力することを選択した場合を除きます)。

これは、認証コード/トークンを取得してユーザーの連絡先を取得したいアクティビティのコードですが、後のアクティビティで連絡先を表示してもかまいません。

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 リクエストを実行して Google から JSON データを受信するための一般的なガイダンスを得ることができれば. 私はアンドロイド開発に非常に慣れておらず、html/http リクエストを扱った経験はほとんどありません。

4

1 に答える 1

0

このサンプルを見てください。Google に反対しているわけではありませんが、原則は同じです。デバイスにシークレットを保存しないようにするために、OAuth で「暗黙的な」フローを使用することを検討することをお勧めします。

于 2013-07-18T16:16:49.207 に答える