Rah*_*ani 22 android google-login parse-platform google-plus-signin
我已经在我的Android应用程序中使用Parse 3个月了.现在我想在应用程序中添加电子邮件登录和社交登录(Facebook和Google+).我已经成功添加了电子邮件和fb登录,用户可以连接电子邮件或Facebook中的任何一个或其中一个,该应用程序将识别用户.
例如,如果我通过电子邮件登录,然后连接Facebook,使用其他设备上的应用程序,通过Facebook登录,该应用程序将知道它是相同的用户,并将为我自定义,并将显示我的数据.电子邮件也有效.
我已为Android添加了Google+登录信息,但我无法将用户的Google+凭据与登录用户相关联.
Parse Users表有一个authData字段,它获取facebook auth数据并获得Twitter以及这两个登录都被解压缩到Parse SDK中.
什么应该是最好的事情为Google+?我对数据库设计以及如何连接使用Google+登录的用户感到困惑?
如果用户只是通过Google+登录该怎么办?如何在Parse上创建解析用户并对用户进行身份验证?
我对云代码和Android很满意,并且非常感谢某些帮助/说明只是让我朝着正确的方向前进.我从来没有使用OAuth2和Parse登录电子邮件和社交登录,我认为我不应该进入它.但如果我错了,请告诉我.
谢谢!
更新:我已经阅读了很多关于解析问题的问题,并且已经多次检查了这个方法(因为我一直认为我在读完之后错过了一些东西).检查这个问题 - 我目前处于相同的情况.
我有:
1.已实施Google+登录
.2.使用GoogltAuthUtil获取访问令牌.
坚持:
3.用户使用Google+登录后如何链接当前登录的Parse用户?
4.如果Google+是用户的第一个(也是唯一的)登录选项,如何创建新的Parse用户?
这似乎与如何从Android Google令牌创建解析_User帐户类似 ?
以下是我在该主题中的答案:
流程如下:
您可以使用newChooseAccountIntent()返回电子邮件的方法中的以下代码创建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
}
}
});
Run Code Online (Sandbox Code Playgroud)
正如我在互联网上研究的那样,这是大多数人坚持的地方.流程如下:
Parse.Cloud.useMasterKey()方法在Cloud Code中查询用户,并使用getSessionToken()查询结果上的方法返回会话密钥.becomeInBackground方法将登录状态保存在磁盘上要验证令牌,您可以发送Parse.Cloud.httprequest到此端点:https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=.这在Google身份文档中有说明.您将收到如下数据:
{
"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"
}
Run Code Online (Sandbox Code Playgroud)
需要比较的是"aud","azp"和"email",它们被翻译为受众,授权方和电子邮件.
要在Cloud Code上查询当前用户:
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
});
Run Code Online (Sandbox Code Playgroud)
注意:请确保您具有以下范围,以便在您检查Cloud Code时显示电子邮件:https://www.googleapis.com/auth/plus.profile.emails.read
Parse 的问题中有一个关于此的问题。它就在这里,我很确定它可以回答您的问题。
https://parse.com/questions/google-plus
它链接到解析博客,其中有一些解决方法。
它说您可以将任何登录添加到 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.
});
Run Code Online (Sandbox Code Playgroud)
您应该查看的另一个网站: https ://parse.com/tutorials/adding-third-party-authentication-to-your-web-app
最后一个是官方的,有一个示例代码