You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Firebase Twitter登录后于PHP端验证IdToken并获取用户信息

安卓端接入Firebase Twitter登录后PHP后端获取用户信息实现

我想要通过Firebase API实现Twitter登录功能,我的客户端是安卓应用,已完成Twitter账号登录逻辑,可将登录生成的IdToken发送至PHP后端,该流程运行正常。

安卓端登录逻辑代码如下:

OAuthProvider.Builder provider = OAuthProvider.newBuilder("twitter.com");
provider.addCustomParameter("lang", "de");
FirebaseAuth.getInstance()
        .startActivityForSignInWithProvider(/* activity= */ this, provider.build())
        .addOnSuccessListener(
                new OnSuccessListener<AuthResult>() {
                    @Override
                    public void onSuccess(AuthResult authResult) {
                        // 用户已登录
                        // 身份提供商数据可从以下路径获取:
                        // authResult.getAdditionalUserInfo().getProfile()
                        // OAuth访问令牌获取方式:
                        // authResult.getCredential().getAccessToken()
                        // OAuth密钥获取方式:
                        // authResult.getCredential().getSecret()
                        Log.d("werte", "User is signed in");
                        Log.d("werte", "Username: " + authResult.getAdditionalUserInfo().getUsername());
                        Log.d("werte", "Info: " + authResult.getAdditionalUserInfo().getProfile().toString());
                        authResult.getUser().getIdToken(true).addOnSuccessListener(new OnSuccessListener<GetTokenResult>() {
                            @Override
                            public void onSuccess(GetTokenResult getTokenResult) {
                                Log.d("werte", "Accesstoken: " + getTokenResult.getToken());
                            }
                        });
                    }
                })
        .addOnFailureListener(
                new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        // 处理登录失败逻辑
                        Log.d("werte", "Sign in failed");
                        e.printStackTrace();
                    }
                });

我在PHP端仅找到了IdToken的验证方法,还需要额外获取登录用户的相关信息,原有验证逻辑如下:

$verifier = IdTokenVerifier::createWithProjectId('myProjectId');
try {
    $token = $verifier->verifyIdToken($idToken);
    echo($token);
} catch (IdTokenVerificationFailed $e) {
    echo $e->getMessage();
    // 示例输出:
    // The value 'eyJhb...' is not a verified ID token:
    // - The token is expired.
}

解决方案

我在Frank的帮助下解决了该问题,采用了略有不同的实现方式:

$googleKeysURL = 'https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com';
$key = json_decode(file_get_contents($googleKeysURL), true);
$decoded = JWT::decode($idToken, $key, array("RS256"));

在$decoded对象中可以找到所有需要的用户资料信息。

内容的提问来源于stack exchange,提问作者JO Developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 18:36:05