是否有可能以某种方式从Android中的WebView中检索PIN码,同时授权Twitter?Twitter - 从webview中检索pin码。 Android
我有教程的例子,但登录用户需要重写从WebView到应用程序的PIN码。我只是想通过这个并直接从网上获取PIN码。
这和它在iPhone上的表现非常相似。
现在我使用的东西是这样的:
public void getTwitter()
{
handleEvent.post(new Runnable()
{
@Override
public void run()
{
if (oHelper.hasAccessToken())
{
oHelper.configureOAuth(twitterConnection);
try
{
twitterConnection.updateStatus("Hii!!!!");
}
catch (TwitterException e)
{
Log.d("TWEET", "Error Updating status " + e.getMessage());
e.printStackTrace();
}
}
else
{
try
{
twitterConnection.setOAuthConsumer(CONSUMER_KEY,CONSUMER_SECRET);
requestToken = twitterConnection.getOAuthRequestToken("");
webViewDialog(requestToken.getAuthorizationURL(), 0);
}
catch (TwitterException e)
{
e.printStackTrace();
}
}
}
});
}
然后显示对话框弹出里面的网页流量:
private void webViewDialog(final String authorizationURL, final int type)
{
LinearLayout container = new LinearLayout(this);
container.setMinimumWidth(200);
container.setMinimumHeight(320);
webView = new WebView(this);
webView.setMinimumWidth(200);
webView.setMinimumHeight(380);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl(authorizationURL);
container.addView(webView);
webDialog = new AlertDialog.Builder(this);
webDialog.setView(container).setPositiveButton("Ok", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
dia = dialog;
if (type == 0)
{
twitterPinCodeDialog();
}
}
}).show();
}
,并在最后提示用户输入PIN码:
public void twitterPinCodeDialog()
{
LinearLayout pinHolder = new LinearLayout(this);
pinHolder.setGravity(Gravity.CENTER);
final EditText editPinCode = new EditText(this);
editPinCode.setGravity(Gravity.CENTER);
editPinCode.setHint("Pin Code");
editPinCode.setWidth(200);
pinHolder.addView(editPinCode);
Builder pinBuilder = new AlertDialog.Builder(this);
pinBuilder.setView(pinHolder).setTitle("Twitter Pin Code Entry")
.setMessage("Please enter displayed twitter code into the field")
.setPositiveButton("Ok", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
if (editPinCode.getText().toString() != null && !editPinCode.getText().toString().equals(""))
{
try
{
accessToken = twitterConnection.getOAuthAccessToken(requestToken,editPinCode.getText().toString());
oHelper.storeAccessToken(accessToken);
Log.i("Access Token:", accessToken.getToken());
Log.i("Access Secret:", accessToken.getTokenSecret());
twitterConnection.updateStatus("Tweeted Successfully");
}
catch (TwitterException te)
{
if (401 == te.getStatusCode())
{
System.out.println("Unable to get the access token.");
}
else
{
te.printStackTrace();
}
}
}
else
{
Toast.makeText(context, "Pin code is required",
Toast.LENGTH_SHORT).show();
dialog.dismiss();
dia.dismiss();
twitterPinCodeDialog();
}
}
}).setNegativeButton("Cancel",new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog,int which)
{
Toast.makeText(context,"To share your news please complete login next time",Toast.LENGTH_LONG).show();
dialog.dismiss();
}
}).show();
}
我甚至不记得我从哪里拿这个例子。 但最好摆脱最后的对话。
谢谢,我会试试看。如果你找到一些例子,你可以跟我分享一下吗? – goodm 2012-02-22 10:18:31