我的Android應用程序使用Java OAuth庫,在Twitter上找到here進行授權。我能夠獲得請求令牌,授權令牌並獲得確認,但是當瀏覽器嘗試回撥url以重新與我的應用程序連接時,它不會使用我在代碼中提供的URL,而是使用我在註冊時提供的URL與Twitter。Android上的OAuth + Twitter:回撥失敗
注:
1.當我的註冊與Twitter的應用程序,我提供一個假想的回調網址:http://abz.xyc.com和設置應用程序類型的瀏覽器。
2.我在我的代碼「myapp」中提供了一個回調網址,併爲我的活動添加了一個意向過濾器,將Browsable類別和數據方案添加爲「myapp」。
3.授權時調用的URL確實包含te代碼中指定的回調url。
任何想法我在做什麼錯在這裏?
相關代碼:
public class FirstActivity extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
OAuthAccessor client = defaultClient();
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(client.consumer.serviceProvider.userAuthorizationURL + "?oauth_token="
+ client.requestToken + "&oauth_callback=" + client.consumer.callbackURL));
startActivity(i);
}
OAuthServiceProvider defaultProvider()
{
return new OAuthServiceProvider(GeneralRuntimeConstants.request_token_URL,
GeneralRuntimeConstants.authorize_url, GeneralRuntimeConstants.access_token_url);
}
OAuthAccessor defaultClient()
{
String callbackUrl = "myapp:///";
OAuthServiceProvider provider = defaultProvider();
OAuthConsumer consumer = new OAuthConsumer(callbackUrl,
GeneralRuntimeConstants.consumer_key, GeneralRuntimeConstants.consumer_secret,
provider);
OAuthAccessor accessor = new OAuthAccessor(consumer);
OAuthClient client = new OAuthClient(new HttpClient4());
try
{
client.getRequestToken(accessor);
} catch (Exception e)
{
e.printStackTrace();
}
return accessor;
}
@Override
protected void onResume()
{
// TODO Auto-generated method stub
super.onResume();
Uri uri = this.getIntent().getData();
if (uri != null)
{
String access_token = uri.getQueryParameter("oauth_token");
}
}
}
// Manifest file
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".FirstActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="myapp"/>
</intent-filter>
</activity>
</application>
感謝您的回覆。 1.能否請你舉你的語句引用: 「推特不認可的OAuth請求,請求回調,只會重定向到應用程序設置指定的回調URL(注意,‘本地主機’是不允許的)。「 2.是的,我做了檢查OAuth的回調上Android的問題,並且已經設置我的應用程序類型(即瀏覽器),因此,再次 感謝。 – Samuh 2010-03-08 13:35:04
添加鏈接的Twitter API公佈。 – 2010-03-08 13:47:34
如果在回調要求的OAuth請求沒有兌現,那麼我怎麼稱呼我的應用程序後授權?Twitter不接受Android風格的URL,這些需要被覆蓋。如果上述不工作有什麼替代方法? 請幫助。 [你得到10現在點; 125回答完這個最後一個問題後:P] – Samuh 2010-03-09 09:52:52