如何链接谷歌+;Android上Parse后端的登录用户?
我已经在android应用程序中使用Parse 3个月了。现在我想在应用程序中添加电子邮件登录和社交登录(Facebook和Google+)。我已经成功添加了电子邮件和fb登录,用户可以同时连接电子邮件或facebook,应用程序将识别该用户 e、 g.如果我通过电子邮件登录,然后连接facebook,在另一台设备上使用该应用程序,通过facebook登录,该应用程序将知道它是同一个用户,并将为我定制,并显示我的数据。电子邮件也可以 我已添加,但无法将用户的Google+凭据与登录用户连接 Parse Users表有一个authData字段,它获取facebook的auth数据,并将获取Twitter,这两个登录都被烘焙到Parse SDK中 为Google+做的最好的事情是什么?我对数据库设计以及如何连接登录Google+的用户感到困惑 如果用户只是通过Google+登录怎么办?如何创建解析用户并在解析时对用户进行身份验证 我对云代码和安卓操作系统很满意,非常感谢能给我一些帮助/指导,让我朝着正确的方向前进。我从来没有使用过OAuth2,也没有使用过电子邮件和社交登录的解析登录,我认为我不应该使用它。但如果我错了,请告诉我 谢谢 更新:我已经阅读了很多关于解析问题的问题,并且已经多次检查了been方法(因为我一直认为在阅读之后我遗漏了一些东西) 我有:如何链接谷歌+;Android上Parse后端的登录用户?,android,parse-platform,google-login,google-plus-signin,Android,Parse Platform,Google Login,Google Plus Signin,我已经在android应用程序中使用Parse 3个月了。现在我想在应用程序中添加电子邮件登录和社交登录(Facebook和Google+)。我已经成功添加了电子邮件和fb登录,用户可以同时连接电子邮件或facebook,应用程序将识别该用户 e、 g.如果我通过电子邮件登录,然后连接facebook,在另一台设备上使用该应用程序,通过facebook登录,该应用程序将知道它是同一个用户,并将为我定制,并显示我的数据。电子邮件也可以 我已添加,但无法将用户的Google+凭据与登录用户连接 Pa
1.已实施Google+登录。
2.使用GoogltAuthUtil获取访问令牌。
坚持:
3.用户使用Google+登录后,如何链接当前登录的解析用户
4.如果Google+是用户的第一个(也是唯一一个)登录选择,如何创建新的解析用户 关于Parse的问题有一个问题。就在这里,我敢肯定它回答了你的问题 它链接到parse博客,在这方面有一些解决方法 它说您可以将任何登录添加到ParseUser中。你会这样做:
Parse.User.become("session-token-here").then(function (user) {
// The current user is now set to user.
}, function (error) {
// The token could not be validated.
});
您应该查看的另一个站点:
最后一个是官方的,有一个示例代码试试这个
ParseUser.becomeInBackground("session-token-here", new LogInCallback() {
public void done(ParseUser user, ParseException e) {
if (user != null) {
// The current user is now set to user.
} else {
// The token could not be validated.
}
}
})为此,我使用了以下代码
ParseUser.becomeInBackground(ParseUser.getCurrentUser().getSessionToken(), new LogInCallback() {
@Override
public void done(ParseUser parseUser, ParseException e) {
if (parseUser != null) {
parseUser.setUsername(userEmail);
//firstName and lastName I am getting from Person class of google plus api
parseUser.put("FirstName", firstName);
parseUser.put("LastName", lastName);
parseUser.saveInBackground();
ParseUtils.verifyParseConfiguration(context);
ParseUtils.subscribeWithUsername(strEmail);
Intent successIntent = new Intent(context, OurServicesActivity.class);
startActivity(successIntent);
overridePendingTransition(R.animator.fade_in, R.animator.fade_out);
finish();
} else {
Log.e(TAG, e.getMessage());
Utilities.showToast(context, "Something occurred");
}
}
});
让我知道它是否有用,或者您是否使用了其他东西。这似乎与 以下是我在这方面的答案:
1.新用户 流程如下:
{
"iss": "https://accounts.google.com",
"sub": "110169484474386276334",
"azp": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
"email": "billd1600@gmail.com",
"at_hash": "X_B3Z3Fi4udZ2mf75RWo3w",
"email_verified": "true",
"aud": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
"iat": "1433978353",
"exp": "1433981953"
}
newchooseAccountContent()
方法中使用以下代码创建ParseUser
ParseUser user = new ParseUser();
user.setUsername(mEmail);
user.setPassword(randomPassword);
user.setEmail(mEmail);
user.signUpInBackground(new SignUpCallback() {
public void done(ParseException e) {
if (e == null) {
// Hooray! Let them use the app now.
} else {
// Sign up didn't succeed. Look at the ParseException
// to figure out what went wrong
}
}
});
2.返回用户
正如我在互联网上研究的那样,这是大多数人陷入困境的地方。流程如下:
{
"iss": "https://accounts.google.com",
"sub": "110169484474386276334",
"azp": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
"email": "billd1600@gmail.com",
"at_hash": "X_B3Z3Fi4udZ2mf75RWo3w",
"email_verified": "true",
"aud": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
"iat": "1433978353",
"exp": "1433981953"
}
Parse.Cloud.useMasterKey()
方法在云代码中查询用户,并使用getSessionToken()
方法在查询结果上返回会话密钥becomeInBackground
方法,使用会话密钥在磁盘上保存登录状态Parse.Cloud.httprequest
发送到此端点:https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=
。这是在中说明的。您将收到以下数据:
{
"iss": "https://accounts.google.com",
"sub": "110169484474386276334",
"azp": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
"email": "billd1600@gmail.com",
"at_hash": "X_B3Z3Fi4udZ2mf75RWo3w",
"email_verified": "true",
"aud": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
"iat": "1433978353",
"exp": "1433981953"
}
需要比较的是“aud”、“azp”和“电子邮件”,它们被翻译为受众、授权方和电子邮件
要查询云上当前用户代码:
var query = new Parse.Query(Parse.User);
query.equalTo("email",mEmail);
query.first({
success: function(user) {
// Use user..getSessionToken() to get a session token
},
error: function(user, error) {
//
},
useMasterKey: true
});
注意:确保您具有以下范围,以便在检查云代码时显示电子邮件:
https://www.googleapis.com/auth/plus.profile.emails.read
我浏览了解析问题中提到的链接,这是一篇相当模糊的博客文章,没有回答很多问题。你的第二个链接是关于网络应用的,但这个问题是关于Android的。你好,你从哪里得到“会话令牌”?是Google+one还是Parse的会话令牌?如果是Parse的,如何获得一个?你能用那种简单的方法回答吗?谢谢你advance@SaiJithendra你好这是谷歌+一。方法将把这个令牌链接到您的用户。虽然只有在服务器端登录用户时,它才会起作用。否则,您应该先登录用户,然后将令牌传递给服务器。我不会建议任何人使用硬编码密码,特别是客户端代码。我的帖子是否回答了您要找的问题?它是否帮助您创建解析用户?这是一个示例代码,我采用了不同的方法。在客户端上登录Google+,然后在云代码中解析,然后使用用户的会话令牌在客户端上成为。但是谢谢你的回答。你好,它帮助我理解了很多。我有一个问题,“我的通行证”的意思是,你怎么拿到的?您是否生成随机密码并将其存储在Parse上?如果是这样,如果用户从设备注销并登录到其他设备,您如何再次使用它?如何使用随机密码处理这些情况。注意:我的应用程序不想要求用户输入密码。提前感谢您好,您从哪里获得“会话令牌”?是Google+one还是Parse的会话令牌?如果是Parse的,如何获得一个?你能用那种简单的方法回答吗?提前感谢每当你在parse中创建一个新项目时,就会生成一个令牌。我知道google正在更新它的身份验证服务。所以,检查一下,解析中是否支持新的