gpt4 book ai didi

android - Twitter - 从 webview 检索 pin 代码。安卓

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:59 25 4
gpt4 key购买 nike

是否可以在授权 Twitter 时以某种方式从 Android 中的 WebView 检索 pin 码?

我有教程示例,但要登录用户需要将 pin 代码从 WebView 重写到应用程序。我只想传递这个并直接从网络获取个人识别码。

这与它在 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();
}
}
}

});
}

然后在对话框弹出窗口中显示 webview:

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();
}

最后提示用户输入密码:

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();
}

我什至不记得我是从哪里举这个例子的。但是去掉最后一个对话框会很好。

最佳答案

是的,这很有可能 - 我面前没有我的代码,但过程如下:

  • 当您发出 Twitter 授权请求时,您会为其提供一个回调 URL,我们称之为 callback://myapp.twitter.pin
  • 在 list 中为此 URL 注册 URL 处理程序
  • 授权成功后,twitter 网页会将用户重定向到您的回调 URL
  • Android 将拦截回调 URL 并恢复您的登录 Activity
  • 您可以使用 onResume 从 uri 访问 PIN,正如我在问题 here 中所展示的那样

关于android - Twitter - 从 webview 检索 pin 代码。安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9392500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com