从 GooglePlus 登录获取访问令牌

Getting Access token from GooglePlus Sign in

我目前正在编写一个 googleplus 登录应用程序,但我一直无法从 google 获取访问令牌。我已阅读 google 以及有关获取访问令牌的文档 here。而且我不确定如何实施它。

下面显示了我实现 gplus 登录的部分代码:

public class GplusAction implements LoginInterface,LogoutInterface{

private GoogleApiClient googleApiClient;
private GoogleSignInOptions googleSignInOptions;
private Context context;
private final static int REQ_CODE = 777;
private Intent signInIntent;
private String accountname;

public GplusAction(Context context) {
    this.context = context;

    googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();

    googleApiClient = new GoogleApiClient.Builder(context)
            .addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOptions)
            .build();
}


@Override
public void login() {
    signInIntent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient);
    startActivityForResult((Activity) context, signInIntent, REQ_CODE, null);
}

@Override
public void logout() {
    Auth.GoogleSignInApi.signOut(googleApiClient);
}


@Override
public void get_onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode == REQ_CODE){
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(signInIntent);
    }
}

我曾尝试使用 GoogleAuthUtils,但它似乎已被弃用,如上文 link 所述。

所以这是我的问题: - 如何使用新方法检索访问令牌?

有什么想法吗?

要获取授权令牌以通过服务器进行身份验证,您需要按照以下步骤操作。

1) 从您的应用程序项目的 google 控制台获取 Web 应用程序的客户端 ID。

2) 创建 GoogleApiClient 的实例,下面 GoogleSignInOptions 传递上面的客户端 ID。

String serverClientId = getString(R.string.server_oauth_client_id);

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestIdToken(serverClientId )
        .build();

3) 登录成功后,您可以从 GoogleSignInResult 中获取 ID 令牌。

GoogleSignInResult result =    Auth.GoogleSignInApi.getSignInResultFromIntent(data);

if (result.isSuccess()) {
    GoogleSignInAccount acct = result.getSignInAccount();
    String idToken = acct.getIdToken();
}