0

今日、私はトークン認証を自分のウェブサイトの他の部分と統合しようとしていましたが、コードをテストしたところ、うまくいきませんでした。私はそれが以前に働いたことを知っていると私はそれについて何も起こっていない何かを変更していない?(Tweetinvi) - AuthFlow.CreateCredentialsFromVerifierCode(verifierCode、token);戻り値null

私はFacebookとLinkedIn認証のための私のコードで同じ問題を抱えています。

最初から私はTweetinviのwikiページに行きました:https://github.com/linvi/tweetinvi/wiki/Authentication そして私はコードをテストしてデバッグしました。

まず、ValidateTwitterAuth ActionResultの(token = new AuthenticationToken)がnullになっているという問題がありましたが、それは働いていた命令に続いて修正されました。しかし、次の問題は、ITwitterCredentialsのuserCredsnullと私はなぜ考えていないのですか?

どうすれば修正できますか? この問題の原因は、他のトークンハンドラの動作を停止させる原因と同じですか?

マイコード:

(ホームコントローラの一部)

(私はアプリ-idとアプリ-秘密を削除しましたが、私は問題ではありませんえー、彼らはので、それらをチェックする)

private IAuthenticationContext _authenticationContext; 

// Step 1 : Redirect user to go on Twitter.com to authenticate 
public ActionResult TwitterAuth() 
{ 
    var appCreds = new ConsumerCredentials("APP-ID", "APP-SECRET"); 

    // Specify the url you want the user to be redirected to 
    var redirectURL = "http://" + Request.Url.Authority +"/Home/ValidateTwitterAuth"; 
    _authenticationContext = AuthFlow.InitAuthentication(appCreds, redirectURL); 

    return new RedirectResult(_authenticationContext.AuthorizationURL); 
} 


public ActionResult ValidateTwitterAuth() 
{ 
    var token = new AuthenticationToken() 
    { 
     AuthorizationKey = "APP-ID", 
     AuthorizationSecret = "APP-SECRET", 
     ConsumerCredentials = new ConsumerCredentials("APP-ID", "APP-SECRET") 
    }; 


    // Get some information back from the URL 
    var verifierCode = Request.Params.Get("oauth_verifier"); 

    // Create the user credentials 
    ITwitterCredentials userCreds = AuthFlow.CreateCredentialsFromVerifierCode(verifierCode, token); 

    // Do whatever you want with the user now! 
    ViewBag.User = Tweetinvi.User.GetAuthenticatedUser(userCreds); 


    string access_token = userCreds.AccessToken; 
    string access_token_secret = userCreds.AccessTokenSecret; 


    return RedirectToAction("Index", "Home"); 
} 
事前に

おかげ

答えて

1

あなたの問題は、次から来ている:

var token = new AuthenticationToken() 
{ 
    AuthorizationKey = "APP-ID", 
    AuthorizationSecret = "APP-SECRET", 
}; 

AuthorizationKeyおよびAuthorizationSecretは、APP_IDおよびAPP_SECRETではありません。

ActionResult TwitterAuth()で作成した_authenticationContextからこれらの情報を取得する必要があります。

この情報を格納する方法は複数あり、コールバックが完了したときにこの情報にアクセスできるようにします。

あなたは私がURLパラメータを使用して、次のコードを示唆して負荷分散を使用していない場合:

public ActionResult TwitterAuth() 
{ 
    var appCreds = new ConsumerCredentials(MyCredentials.CONSUMER_KEY, MyCredentials.CONSUMER_SECRET); 
    var redirectURL = "http://" + Request.Url.Authority + "/Home/ValidateTwitterAuth"; 
    var authenticationContext = AuthFlow.InitAuthentication(appCreds, redirectURL); 

    return new RedirectResult(authenticationContext.AuthorizationURL); 
} 

public ActionResult ValidateTwitterAuth() 
{ 
    var verifierCode = Request.Params.Get("oauth_verifier"); 
    var authorizationId = Request.Params.Get("authorization_id"); 

    if (verifierCode != null) 
    { 
     var userCreds = AuthFlow.CreateCredentialsFromVerifierCode(verifierCode, authorizationId); 
     var user = Tweetinvi.User.GetAuthenticatedUser(userCreds); 

     ViewBag.User = user; 
    } 

    return View(); 
} 

あなたがここにこの主題についての詳細を読むことができます:https://github.com/linvi/tweetinvi/wiki/Authentication#web-application-considerations

+0

本当にありがとうございました。私のトークンハンドラが突然すべて機能しなくなって、本当に悪いと感じました。しかし、今それは1つ、2つ行く:) – TheRWS96

関連する問題