如何使用Firebase_Auth和Flatter登录Twitter
一个程序应该如何使用Twitter和Flatter登录 我看到一些例子使用了or,但是他们现在使用了一个,人们抱怨 Firebase Auth提供了一个,但以下代码仍然不完整:如何使用Firebase_Auth和Flatter登录Twitter,firebase,flutter,dart,firebase-authentication,twitter-oauth,Firebase,Flutter,Dart,Firebase Authentication,Twitter Oauth,一个程序应该如何使用Twitter和Flatter登录 我看到一些例子使用了or,但是他们现在使用了一个,人们抱怨 Firebase Auth提供了一个,但以下代码仍然不完整: final AuthCredential credential=TwitterAuthProvider.getCredential( authToken:twitterAccessToken, authTokenSecret:twitterAccessTokenSecret, ); 最终AuthResult结果=使用凭证
final AuthCredential credential=TwitterAuthProvider.getCredential(
authToken:twitterAccessToken,
authTokenSecret:twitterAccessTokenSecret,
);
最终AuthResult结果=使用凭证(凭证)等待身份验证登录;
他们在主页上分享了一个共同的示例,只有“登录提供商”发生了变化,其余的都是相同的(谷歌、fb和twitter)。结果有一个用户属性,该属性将返回用户详细信息,请使用下面的代码进行检查
final AuthCredential credential = TwitterAuthProvider.getCredential(
authToken: twitterAccessToken,
authTokenSecret: twitterAccessTokenSecret,
);
final AuthResult result = await auth.signInWithCredential(credential);
final FirebaseUser user = result.user;
print("signed in " + user.displayName);
他们在主页上分享了一个共同的示例,只有“登录提供商”发生了变化,其余的都是相同的(谷歌、fb和twitter)。结果有一个用户属性,该属性将返回用户详细信息,请使用下面的代码进行检查
final AuthCredential credential = TwitterAuthProvider.getCredential(
authToken: twitterAccessToken,
authTokenSecret: twitterAccessTokenSecret,
);
final AuthResult result = await auth.signInWithCredential(credential);
final FirebaseUser user = result.user;
print("signed in " + user.displayName);
要使用Twitter登录,请执行以下操作:
Future<FirebaseUser> loginWithTwitter() async {
var twitterLogin = new TwitterLogin(
consumerKey: 'key',
consumerSecret: 'secretkey',
);
final TwitterLoginResult result = await twitterLogin.authorize();
switch (result.status) {
case TwitterLoginStatus.loggedIn:
var session=result.session;
final AuthCredential credential= TwitterAuthProvider.getCredential(
authToken: session.token,
authTokenSecret: session.secret
);
FirebaseUser firebaseUser=(await firebaseAuth.signInWithCredential(credential)).user;
print("twitter sign in"+firebaseUser.toString());
break;
case TwitterLoginStatus.cancelledByUser:
break;
case TwitterLoginStatus.error:
break;
}
Future loginWithTwitter()异步{
var twitterLogin=新twitterLogin(
消费市场:“关键”,
消费者信条:“秘密密钥”,
);
最终TwitterLoginResult结果=等待twitterLogin.authorize();
开关(结果状态){
case TwitterLoginStatus.loggedIn:
var session=result.session;
最终AuthCredential凭据=TwitterAuthProvider.getCredential(
authToken:session.token,
authTokenSecret:session.secret
);
FirebaseUser FirebaseUser=(等待firebaseAuth.signInWithCredential(credential)).user;
打印(“twitter登录”+firebaseUser.toString());
打破
case TwitterLoginStatus.Cancelled ByUser:
打破
case TwitterLoginStatus.error:
打破
}
使用
twitterlogin
并传递使用者密钥和使用者密钥,然后使用方法getCredential()
和signInWithCredential
登录。要使用Twitter登录,请执行以下操作:
Future<FirebaseUser> loginWithTwitter() async {
var twitterLogin = new TwitterLogin(
consumerKey: 'key',
consumerSecret: 'secretkey',
);
final TwitterLoginResult result = await twitterLogin.authorize();
switch (result.status) {
case TwitterLoginStatus.loggedIn:
var session=result.session;
final AuthCredential credential= TwitterAuthProvider.getCredential(
authToken: session.token,
authTokenSecret: session.secret
);
FirebaseUser firebaseUser=(await firebaseAuth.signInWithCredential(credential)).user;
print("twitter sign in"+firebaseUser.toString());
break;
case TwitterLoginStatus.cancelledByUser:
break;
case TwitterLoginStatus.error:
break;
}
Future loginWithTwitter()异步{
var twitterLogin=新twitterLogin(
消费市场:“关键”,
消费者信条:“秘密密钥”,
);
最终TwitterLoginResult结果=等待twitterLogin.authorize();
开关(结果状态){
case TwitterLoginStatus.loggedIn:
var session=result.session;
最终AuthCredential凭据=TwitterAuthProvider.getCredential(
authToken:session.token,
authTokenSecret:session.secret
);
FirebaseUser FirebaseUser=(等待firebaseAuth.signInWithCredential(credential)).user;
打印(“twitter登录”+firebaseUser.toString());
打破
case TwitterLoginStatus.Cancelled ByUser:
打破
case TwitterLoginStatus.error:
打破
}
使用
twitterlogin
并传递使用者密钥和使用者密钥,然后使用方法getCredential()
和signInWithCredential
登录。我可以使用3种资源解决此问题:
CustomWebView
类似,我创建了一个TwitterLoginScreen
如下:
import'package:firebase_auth/firebase_auth.dart';
进口“包装:颤振/材料.省道”;
导入“包:flatter_webview_plugin/flatter_webview_plugin.dart”;
导入“包:oauth1/oauth1.dart”;
///Twitter登录屏幕。
///请参阅[使用Twitter登录](https://developer.twitter.com/en/docs/basics/authentication/guides/log-in-with-twitter).
类TwitterLoginScreen扩展StatefulWidget{
最终推特平台=平台(
'https://api.twitter.com/oauth/request_token“,//临时凭据请求
'https://api.twitter.com/oauth/authorize“,//资源所有者授权
'https://api.twitter.com/oauth/access_token“,//令牌凭据请求
SignatureMethods.hmacSha1,//签名方法
);
最终客户端凭据客户端凭据;
最终字符串oauthCallbackHandler;
推特登录屏幕({
@所需的最终字符串consumerKey,
@所需的最终字符串ConsumerCret,
@需要此.oauthCallbackHandler,
}):clientCredentials=clientCredentials(consumerKey,consumerSecret);
@凌驾
_TwitterLoginScreentState createState()=>\u TwitterLoginScreentState();
}
类_TwitterLoginsScreenState扩展状态{
最终的FlatterWebViewPlugin=FlatterWebViewPlugin();
授权书;
@凌驾
void initState(){
super.initState();
//初始化Twitter OAuth
_oauth=授权(widget.clientCredentials,widget.twitter平台);
webviewplugin.onUrlChanged.listen((url){
//查找步骤2回调,以便我们可以转到步骤3。
if(url.startsWith(widget.oauthCallbackHandler)){
final queryParameters=Uri.parse(url.queryParameters);
最终oauthToken=queryParameters['oauth_token'];
最终oauthVerifier=查询参数['oauth_verifier'];
if(null!=oauthToken&&null!=oauthVerifier){
_twitterLogInFinish(oauthToken、oauthVerifier);
}
}
});
_twitterLogInStart();
}
@凌驾
无效处置(){
dispose();
super.dispose();
}
Future\u twitterLogInStart()异步{
断言(null!=\u oauth);
//步骤1-请求令牌
最终请求令牌响应=
wait_oauth.requestTemporaryCredentials(widget.oauthCallbackHandler);
//步骤2-重定向到授权页面
最终授权页=_oauth.getResourceOwnerAuthorizationURI(
requestTokenResponse.credentials.token);
启动(授权页面);
}
未来twitterLogInFinish(
字符串oauthToken,字符串oauthVerifier)异步{
//步骤3-请求访问令牌
final tokenCredentialsResponse=等待_oauth.requestTokenCredentials(
凭证(oauthToken,