这些是我登录我的应用程序所需的最低细节:
guid(全球唯一身份证)
FNAME
L-NAME
电子邮件
性别
对于Facebook登录很明显,可以这样做:
JSONObject json = Util.parseJson(facebook.request("me");
获取上面指定的所有数据。
是否有一种方法可以使用Gmail做类似且简单的事情?
我读了this,其中说:
不,没有这样的SDK(比如facebook),如果你想访问它 Gmail的电子邮件,然后您需要实现自己的电子邮件客户端和 为此,请遵循Spk分享的上述链接。
但我只想要很少的用户细节,我不需要任何与他的邮件相关的东西......,这些都属于授权(如果我是对的)。我只需要身份验证:
我也读过this,但看起来不会对任何人有帮助。
这是我现在的代码:
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();
}
}
非常感谢任何帮助,谢谢。
答案 0 :(得分:3)
您不应使用Gmail进行使用Google帐户的用户身份验证。您可以使用Google +登录Android。这样,您就可以在使用OAuth获取所需权限后访问用户的个人资料信息。查看指南:
答案 1 :(得分:1)
这些属性将在原始身份验证中以claims传递,并在每次后续身份验证中传递。
Google allows you to request,其中包含国家/地区,电子邮件,名字,语言和姓氏作为身份验证令牌的声明。
由于他们不提供uuid,您必须创建一个电子邮件地址。没有支持(我能找到)来检索性别。