2013-12-08 74 views
3

我有一個應用程序的推特帳戶,目前它的設置讓學生可以從我們的網站推特,因此他們的推文顯示「通過SchoolAppNameHere」在他們的推文底部。可能通過twython使用來自不同帳戶的appkey /密鑰來鳴叫?

是否有可能使用Twython來使用Appkey和密鑰,然後從完全不同的身份驗證令牌,所以當我運行下面的代碼時,會從帳戶推送什麼不會創建應用程序...

from twython import Twython 

APP_KEY = '' 
APP_SECRET = '' 
OAUTH_TOKEN = '' 
OAUTH_TOKEN_SECRET = '' 

twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET) 
twitter.update_status(status="test") 

任何想法,將不勝感激:)

編輯,更新例如/解釋如下:

比方說,下面的圖像的從賬戶「stackoverflowapp」和應用程序被稱爲「Stackoverflow測試應用程序」:

http://i.imgur.com/8sIpak5.png http://i.imgur.com/e6CYt6e.png

使用下面的代碼位將從帳戶鳴叫通過所謂的「#1測試應用程序的」 applicationg「stackoverflowapp」與鳴叫「測試」

from twython import Twython 

APP_KEY = 'coN_kEY_123456789' 
APP_SECRET = 'cOn_sEcr3t_123456789' 
OAUTH_TOKEN = 'Acc3ss_tok3N_123456789' 
OAUTH_TOKEN_SECRET = 'aCCeSS_tOkEn_sEcrET_123456789' 

twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET) 
twitter.update_status(status="test") 

比方說,以下圖像來自賬戶「useraccount1」,該應用程序被稱爲「testing123」:

http://i.imgur.com/vYJLmfr.png

因此,現在我有權訪問令牌以登錄帳戶「useraccount1」,我如何通過名爲「Stackoverflow測試應用程序」的應用程序發起tweet,該應用程序是由用戶創建的:「stackoverflowapp」 :

from twython import Twython 

APP_KEY = 'coN_kEY_123456789' 
APP_SECRET = 'cOn_sEcr3t_123456789' 
OAUTH_TOKEN = 'Acc3ss_123456789' 
OAUTH_TOKEN_SECRET = 'aCCeSS_sEcrET_123456789' 

twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET) 
twitter.update_status(status="test update") 

不幸的是,我得到的錯誤:

TwythonAuthError: Twitter API returned a 401 (Unauthorized), Could not authenticate you 
+0

只要'OAUTH_TOKEN'和'OAUTH_TOKEN_SECRET'被授權與您'APP_KEY'和'APP_SECRET'對,那麼你可以代表該用戶的鳴叫。所以你不能做的就是使用授權給完全不同的應用程序的令牌,即令牌在應用程序之間不可互換。這有意義嗎?或者我錯過了什麼? – soulseekah

+0

@soulseekah我已更新我的原始帖子,以更詳細地顯示問題,請參閱我的修改。 – Ryflex

+0

這不是OAuth2的工作原理。您的「useraccount1」令牌僅對「testing123」有效,不能與「Stackoverflow測試應用程序」一起使用。您必須明確請求「useraccount1」的標記。請參閱:http://tools.ietf.org/html/draft-ietf-oauth-v2-31#section-1.4「訪問令牌用於訪問受保護的資源憑據的訪問令牌是代表頒發給授權的字符串。客戶。」 – soulseekah

回答

3

這當然是可能的。當您在Twitter中創建應用程序時,他們會爲您提供您自己的身份驗證令牌,以便您立即使用。

Use the access token string as your "oauth_token" and the access token secret as your "oauth_token_secret" to sign requests with your own Twitter account. Do not share your oauth_token_secret with anyone.

要獲得同一應用程序的其他帳戶的密鑰,您需要爲每個帳戶請求更多密鑰。這在這裏詳細描述:https://dev.twitter.com/docs/auth/obtaining-access-tokens

因爲聽起來你會自己做授權,所以應該使用更簡單的PIN-based方法。 https://twython.readthedocs.org/en/latest/usage/starting_out.html#authentication

get_authentication_tokensget_authorized_tokens是你正在尋找的方法:

您使用twython,獲得這些可以使用庫來完成。

from twython import Twython 
import sys 

APP_KEY = 'coN_kEY_123456789' 
APP_SECRET = 'cOn_sEcr3t_123456789' 

twitter = Twython(APP_KEY, APP_SECRET) 
auth = twitter.get_authentication_tokens() 

print('Visit %s and enter your PIN: ' % auth.get('auth_url')), 
pin = sys.stdin.readline().strip() 

twitter = Twython(APP_KEY, APP_SECRET, auth.get('oauth_token'), auth.get('oauth_token_secret')) 
tokens = twitter.get_authorized_tokens(pin) 

print('OAUTH_TOKEN: %s' % tokens.get('oauth_token')) 
print('OAUTH_TOKEN_SECRET: %s' % tokens.get('oauth_token_secret')) 

商店OAUTH_TOKENOAUTH_TOKEN_SECRET一些地方安全和隨意重用。此外,請確保您在訪問URL並獲取PIN時授權正確的帳戶。

你所有的API調用將在bahalf是通過授權令牌和你via線接入將是您原來的應用程序的帳戶進行。爲您想要推特的每個帳戶使用相應的令牌,但無法混合匹配。