Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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
如何使用Firebase_Auth和Flatter登录Twitter_Firebase_Flutter_Dart_Firebase Authentication_Twitter Oauth - Fatal编程技术网

如何使用Firebase_Auth和Flatter登录Twitter

如何使用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结果=使用凭证

一个程序应该如何使用Twitter和Flatter登录

我看到一些例子使用了or,但是他们现在使用了一个,人们抱怨

Firebase Auth提供了一个,但以下代码仍然不完整:

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种资源解决此问题:

  • 文章
  • 向导
  • 图书馆
  • 最终,我能够完全删除该软件包,但仍然支持使用Twitter登录

    与Facebook解决方案中概述的
    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,