java - 在 Google + 上,获取用户令牌

  显示原文与译文双语对照的内容

我试图与Google加入,它的中用户可以使用 Google,进行登录,它的凭据将在解析中存储。

为此,我添加了以下代码:


private void onGoogleButtonClicked() {
 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.
 }
 }
 });

 }
 });

现在我的问题仍然是找到从Google添加的会话令牌。 我已经开始使用下面的代码:


 final String token = GoogleAuthUtil.getToken(context,
 mPlusClient.getAccountName(), scope);

现在我需要对上下文。mPlusCLient和范围做一些事情。 我一直在努力解决这个问题,任何帮助都将被感激。

时间: 作者:

你应该编写一个 Asynctask 来检索令牌,因为你不希望这里进程能够将ui输出。 获取用户登录的account name,并调用 Asynctask 获取令牌。 下面是一个示例代码:


 private class RetrieveTokenTask extends AsyncTask<String, Void, String> {

 @Override
 protected String doInBackground(String... params) {
 String accountName = params[0];
 String scopes ="oauth2:profile email";
 String token = null;
 try {
 token = GoogleAuthUtil.getToken(getApplicationContext(), accountName, scopes);
 } catch (IOException e) {
 Log.e(TAG, e.getMessage());
 } catch (UserRecoverableAuthException e) {
 startActivityForResult(e.getIntent(), REQ_SIGN_IN_REQUIRED);
 } catch (GoogleAuthException e) {
 Log.e(TAG, e.getMessage());
 }
 return token;
 }

 @Override
 protected void onPostExecute(String s) {
 super.onPostExecute(s);
 Toast.makeText(getApplicationContext(),"Token :" + s, Toast.LENGTH_SHORT).show();
 } catch (Exception e) {
 e.printStackTrace();
 }

 }

你可以按以下方式调用 Asynctask:


String mAccountName = Plus.AccountApi.getAccountName(mGoogleApiClient);
new RetrieveTokenTask().execute(mAccountName);

...