php - PHP Firebase 验证与 Twitter 获取用户信息
问题描述
我不想通过 Firebase API 实现 Twitter 登录。我的客户端是一个 Android 应用程序,它登录 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) {
// User is signed in.
// IdP data available in
// authResult.getAdditionalUserInfo().getProfile().
// The OAuth access token can also be retrieved:
// authResult.getCredential().getAccessToken().
// The OAuth secret can be retrieved by calling:
// 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) {
// Handle failure.
Log.d("werte", "Sign in failed");
e.printStackTrace();
}
});
但是对于php,我只找到了一种验证令牌的方法。我还需要用户信息。我怎么得到这个?
$verifier = IdTokenVerifier::createWithProjectId('myProjectId');
try {
$token = $verifier->verifyIdToken($idToken);
echo($token);
} catch (IdTokenVerificationFailed $e) {
echo $e->getMessage();
// Example Output:
// The value 'eyJhb...' is not a verified ID token:
// - The token is expired.
}
编辑:我在弗兰克的帮助下解决了这个问题。但我用了一点不同的方式。
$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
对象中,您可以找到所需的每个配置文件信息。谢谢弗兰克
解决方案
推荐阅读
- excel - Excel VBA:将范围,单个单元格复制到另一个工作簿
- python - 反向地理编码 - 使用 geopy.Nominatim 获取邮政编码
- sqlite - 在 SQLite 中检查正确的电子邮件格式
- python-3.x - 追加和处理重复项
- c# - Jquery/Ajax 更新表[ASP.NET Core MVC]
- java - Java Pattern 匹配一个字符串,然后匹配任何字符,直到一个特定的字符
- python - 使用 Pandas 从另一列中查找满足某一列条件的值范围
- jquery - 如何使用 JQuery 将表 TR 元素与另一个 TR 切换
- python - 所有协变量的生命线危险比 = 1
- css - 移动 Chrome 上的 Web 响应问题