2017-04-11 9 views
2

Twitter APPを持ち、ユーザーがWebサイトとそのアプリケーションを使用してサインインしています。そのユーザーの「oauth_verifier」を受け取りました。 ログイン後、ユーザーはデフォルトでTwitterアカウントに従ってください。 これを達成するために、Net :: Twitter :: Role :: OAuthの1番目の例を使用しました。ツイッターとユーザーベリファイアでログインします。Net :: Twitter :: Role :: OAuth

私たちの「CONSUMER_KEY」と「consumer_secret」、および

my($access_token, $access_token_secret, $user_id, $screen_name) = $nt->request_access_token(verifier => $verifier) 

私はツイッターから401エラーを取得し、さらに行くことができない。私はここで間違って

auth_url => https://api.twitter.com/oauth/authorize?oauth_token=rhDMIgAAAAAA0FiXAAABW17hoRI 
Net::Twitter::Role::OAuth::request_access_token(): GET https://api.twitter.com/oauth/access_token failed: 401 Authorization Required at login.pl line xx 

何をしているのですか?

+0

あなたのアプリがMojoアプリの場合は、これにプラグインを使用するだけです。 https://metacpan.org/pod/Mojolicious::Plugin::Web::Auth – oalders

答えて

1

あなたがPINベースまたは3連OAuthを実行しようとしているかどうかは不明です。 PINベースのOAuthで

、あなたが最初の認証URLにユーザーをリダイレクト:サインインした後

use Net::Twitter; 

my $nt = Net::Twitter->new(
    traits   => ['API::RESTv1_1', 'OAuth'], 
    consumer_key => "YOUR-CONSUMER-KEY", 
    consumer_secret => "YOUR-CONSUMER-SECRET", 
); 

my $url = $nt->get_authorization_url(); 

print "Location: ", $url, "\n\n"; 

、ユーザーがアクセストークンを取得するには、検証のパラメータとして渡されなければならないPIN番号を受信:

my $pin = 'PIN-NUMBER-PROVIDED-AFTER-LOGIN'; 

my($access_token, $access_token_secret, $user_id, $screen_name) = $nt->request_access_token(verifier => $pin); 

3本足のOAuthでは、「get_authorization_url」を呼び出すときに、コールバックURL(アプリに登録されていることと同じ)を指定する必要がありますことを除いて、ほとんど同じ方法で起動します。

use Net::Twitter; 

my $nt = Net::Twitter->new(
    traits   => ['API::RESTv1_1', 'OAuth'], 
    consumer_key => "YOUR-CONSUMER-KEY", 
    consumer_secret => "YOUR-CONSUMER-SECRET", 
); 

my $url = $nt->get_authorization_url(callback => 'MY-CALLBACK-URL'); 

print "Location: ", $url, "\n\n"; 

今回は、サインインした後、ユーザーにPIN番号を与える代わりに、Twitterは2つのクエリ文字列パラメータoauth_tokenとoauth_verifierを渡すコールバックURLに自動的にリダイレクトされます。アクセストークン:

use Net::Twitter; 
use CGI; 

my $cgi = new CGI; 

my $oauth_token = $cgi->param('oauth_token'); 
my $oauth_verifier = $cgi->param('oauth_verifier'); 

my $nt = Net::Twitter->new(
    traits   => ['API::RESTv1_1', 'OAuth'], 
    consumer_key => "YOUR-CONSUMER-KEY", 
    consumer_secret => "YOUR-CONSUMER-SECRET", 
); 

$nt->request_token($oauth_token); 
$nt->request_token_secret($oauth_verifier); 

my($access_token, $access_token_secret, $user_id, $screen_name) = $nt->request_access_token(verifier => $oauth_verifier); 

これが役に立ちます。

+0

あなたはTwitterでoauthプロセスを正しく記述していますが、これはアクセスを認証して許可するだけです。 $ ntで実際に名字、姓、電子メールアドレスを取得するためにどのような呼び出しをしますか? – HoldOffHunger

+0

はい、これはアクセスを認証し、許可します。これは元の質問がヘルプを求めていたものとまったく同じです。次のステップは、 – regiov

+0

'my $ resp = $ nt-> verify_credentials({include_email => 1}); ' – regiov

関連する問題