Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Google Plus登录获取访问令牌_Java_Android_Google Plus_Token - Fatal编程技术网

Java 从Google Plus登录获取访问令牌

Java 从Google Plus登录获取访问令牌,java,android,google-plus,token,Java,Android,Google Plus,Token,我目前正在编写一个googleplus登录应用程序,我一直在努力从google获取访问令牌。我已经阅读了关于获取访问令牌的google plus文档。我不知道该如何实施 下面显示了实现gplus登录的部分代码: public class GplusAction implements LoginInterface,LogoutInterface{ private GoogleApiClient googleApiClient; private GoogleSignInOptions google

我目前正在编写一个googleplus登录应用程序,我一直在努力从google获取访问令牌。我已经阅读了关于获取访问令牌的google plus文档。我不知道该如何实施

下面显示了实现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,但它似乎已经不推荐使用,如上面链接中所述

下面是我的问题: -如何使用新方法检索访问令牌


有什么想法吗?

要获得身份验证令牌以通过服务器验证,您需要遵循以下步骤

1) 从google控制台为您的应用程序项目获取web应用程序的客户端id

2) 创建
GoogleAppClient
的实例,并在客户端id上方传递
GoogleSignionOptions

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();
}

嘿谢谢你的回复。我对您的代码进行了调试,得到:“authCode=null”,这意味着无法检索auth令牌。有什么办法吗?嗨,尤金,我发错代码了,应该是getIdToken()。我重新测试了一下,得到了令牌。请确保在构建GoogleSignations时使用web应用程序客户端id。您好!谢谢你的回复。我也尝试了getIdToken()并得到了一个令牌作为回报。完美的再次感谢你!