0

これらは、アプリケーションにログインするために必要な最小限の詳細です。

guid(グローバルユニークID)

fname

名前

Eメール

性別

Facebookログインの場合、それは明らかで、これを行うことができました:

JSONObject json = Util.parseJson(facebook.request("me");

上記で指定されたすべてのデータを取得します。

Gmail で同様の簡単な操作を行う方法はありますか?

私はこれを読んだ:

いいえ、そのような SDK (Facebook など) はありません。Gmail の電子メールにアクセスする場合は、独自の電子メール クライアントを実装する必要があります。そのためには、Spk が共有する上記のリンクに従ってください。

しかし、ユーザーの詳細はほとんど必要ありません。彼のメールなどに関連するものは必要ありません..、承認の下にある(私が正しければ)。認証のみが必要です:

私もこれを読みましたが、何の役にも立たないようです。

これは私が今持っているコードです:

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesClient.ConnectionCallbacks;
import com.google.android.gms.common.GooglePlayServicesClient.OnConnectionFailedListener;
import com.google.android.gms.plus.GooglePlusUtil;
import com.google.android.gms.plus.PlusClient;
import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.IntentSender.SendIntentException;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity implements ConnectionCallbacks,
        OnConnectionFailedListener {

    private static final int REQUEST_CODE_RESOLVE_ERR = 7;
    private ProgressDialog mConnectionProgressDialog;
    private PlusClient mPlusClient;
    private ConnectionResult mConnectionResult;
    private String TAG = "GmailLogin";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        int errorCode = GooglePlusUtil.checkGooglePlusApp(this);
        if (errorCode != GooglePlusUtil.SUCCESS) {
            GooglePlusUtil.getErrorDialog(errorCode, this, 0).show();
        } else {

             mPlusClient = new PlusClient.Builder(this, this, this)
             .setVisibleActivities( "http://schemas.google.com/AddActivity",
             "http://schemas.google.com/BuyActivity").build();


            mConnectionProgressDialog = new ProgressDialog(this);
            mConnectionProgressDialog.setMessage("Signing in...");

            Button signInButton = (Button) findViewById(R.id.sign_in_button);
            signInButton.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {

                    if (mConnectionResult == null) {
                        mConnectionProgressDialog.show();
                    } else {
                        try {
                            mConnectionResult
                                    .startResolutionForResult(
                                            MainActivity.this,
                                            REQUEST_CODE_RESOLVE_ERR);
                        } catch (SendIntentException e) {
                            // Try connecting again.
                            mConnectionResult = null;
                            mPlusClient.connect();
                        }
                    }
                }
            });
        }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onConnectionFailed(ConnectionResult result) {
        if (result.hasResolution()) {
            try {
                result.startResolutionForResult(this, REQUEST_CODE_RESOLVE_ERR);
            } catch (SendIntentException e) {
                mPlusClient.connect();
            }
        }
        // Save the result and resolve the connection failure upon a user click.
        mConnectionResult = result;
    }

    @Override
    protected void onActivityResult(int requestCode, int responseCode,
            Intent intent) {
        if (requestCode == REQUEST_CODE_RESOLVE_ERR
                && responseCode == RESULT_OK) {
            mConnectionResult = null;
            mPlusClient.connect();
        }
    }

    @Override
    public void onConnected() {
        String accountName = mPlusClient.getAccountName();
        Toast.makeText(this, accountName + " is connected.", Toast.LENGTH_LONG)
                .show();
    }

    @Override
    public void onDisconnected() {
        Log.d(TAG, "disconnected");
    }

    @Override
    protected void onStart() {
        super.onStart();
        mPlusClient.connect();
    }

    @Override
    protected void onStop() {
        super.onStop();
        mPlusClient.disconnect();
    }

    }

どんな助けでも大歓迎です、ありがとう。

4

2 に答える 2

3

Google アカウントを使用したユーザー認証に Gmail を使用しないでください。代わりに、Android 用の Google + サインインを使用できます。これにより、OAuth を使用して必要な権限を取得すると、ユーザーのプロファイル情報にアクセスできるようになります。ここでガイドをチェックしてください:

https://developers.google.com/+/mobile/android/sign-in

于 2013-02-27T06:54:03.433 に答える
1

これらの属性は、元の認証だけでなく、後続の各認証でも クレームとして渡されます。

Googleでは、認証トークンのクレームとして最大で国、電子メール、名、言語、および姓を含めるよう に要求できます。

彼らは uuid を提供しないため、電子メール アドレスから 1 つを作成する必要があります。性別を取得するための (私が見つけた) サポートはありません。

于 2013-02-27T06:53:08.537 に答える