这是Twitter登录的第一页,当我点击取消并返回应用时 我的申请得到了关闭。 M使用Twitter4J 请告诉我可能存在的问题。
M使用此代码。
void OAuthLogin() {
try {
twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(consumerKey, consumerSecret);
requestToken = twitter.getOAuthRequestToken(CALLBACKURL);
String authUrl = requestToken.getAuthenticationURL();
this.startActivity(new Intent(Intent.ACTION_VIEW, Uri
.parse(authUrl)));
} catch (TwitterException ex) {
Log.e("in Main.OAuthLogin", ex.getMessage());
}
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Uri uri = intent.getData();
if (uri != null && uri.toString().contains(CALLBACKURL)) {
try {
String verifier = uri.getQueryParameter("oauth_verifier");
AccessToken accessToken = twitter.getOAuthAccessToken(
requestToken, verifier);
String token = accessToken.getToken(), secret = accessToken
.getTokenSecret();
twitter.setOAuthAccessToken(token, secret);
twitter.updateStatus(base_link_url);
this.displayTimeLine(token, secret); // after everything,
} catch (TwitterException ex) {
}
}
}
我的清单文件:M为我的班级使用此代码
<activity android:name=".Test" android:configChanges="keyboard|keyboardHidden|orientation"
android:screenOrientation="portrait" android:label="@string/app_name"
android:launchMode="singleTask" android:theme="@android:style/Theme.NoTitleBar">
<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="gauravmusic" android:host="twitt" />
</intent-filter>
</activity>
MY Callback Url:在我的代码中使用了哪个
private final String CALLBACKURL = "gauravmusic://twitt";
现在建议我哪里出错了。
经过研究我发现了,
if (uri != null && uri.toString().contains(CALLBACKURL))
{
}
如果我将此条件更改为
if (uri != null && uri.getScheme().toString().contains(CALLBACKURL_SCHEME)) {
}
取消,并返回应用现在正常工作,但现在我无法在我的墙上发布推文。 我把这两个条件加在一起
if (uri != null && uri.getScheme().toString().contains(CALLBACKURL_SCHEME) || uri.toString().contains(CALLBACKURL)) {
}
它也不起作用.. 请建议我。
您好我找到了答案。我找到一个模式,当点击取消和重新调整到应用链接时,将执行此代码。在这种情况下,我们没有登录,所以我们找不到String Verifier的值,它给出了NullPointer Exception。
if (uri != null && uri.toString().contains(CALLBACKURL)) {
try {
String verifier = uri.getQueryParameter("oauth_verifier");
AccessToken accessToken = twitter.getOAuthAccessToken(
requestToken, verifier);
String token = accessToken.getToken(), secret = accessToken
.getTokenSecret();
twitter.setOAuthAccessToken(token, secret);
twitter.updateStatus(base_link_url);
this.displayTimeLine(token, secret); // after everything,
} catch (TwitterException ex) {
}
}
我将此行更改为
if (uri != null && uri.getScheme().toString().contains(CALLBACKURL_SCHEME)&& !uri.toString().contains("denied"))
经过一些研究,我发现当我们点击取消并返回应用链接时,其uri就是那样
DEBUG/URI!!!!!!!!!!!!!!!!!!!!!(5174): gauravmusic://twittdenied=FjgW7QQYpFDI03sDvIc5I1w6w2Xv67TFI9sKW1OyA
当我们成功登录时,Uri就是那样
08-17 10:31:19.182: DEBUG/URI(5278): gauravmusic://twitt?oauth_token=pm0E10vayzTViLGQpGZwwpIKhQ9aqwLrEBggiJ7vvPY&oauth_verifier=cHiWkuiQfygmlPeC7B6fNbiqv34gkPIdWctlavzGo80
然后我添加条件
!uri.toString()。contains(“denied”)(bcz当我们没有登录时,uri包含“拒绝”字样)
它对我来说很好。
现在,当我点击取消并返回应用时,它将无法到达此行或此循环。
String verifier = uri.getQueryParameter(“oauth_verifier”);
现在一切正常。建议我,如果有更好的想法来处理这个。我不想依赖于Uri的“被拒绝”这个词。
答案 0 :(得分:1)
在Android应用程序中查看Twitter集成链接。
它非常完美。
确保您在应用程序的“设置”页面的“字段回拨”URL中提供了一些虚拟回调。
Integrating Twitter in Android Application
编辑:
我猜测我们的代码中发生了什么,如果您从授权中取消应用程序,那么下面的验证程序将没有值
String verifier = uri.getQueryParameter("oauth_verifier");
由于没有值,它会抛出 NULL POINTER EXCEPTION ,它将从尝试转到 Catch 块,因此
twitter.updateStatus(base_link_url);
将无法到达
所以Tweet没有发布。
如果您需要检查此添加来记录到阻止阻止,以便您可以看到发生了什么。 `