允许Twitter应用程序后找不到Oauth回调

3

嘿,我正在使用Twitter4j API开发应用程序。为了允许该应用程序并获得访问令牌,我会在清单文件中设置回调参数,并启动浏览器。

<data android:scheme="scheme" android:host="authenticatorapp"></data> 

在允许应用程序后,浏览器调用以下内容并出现未找到消息。
scheme://authenticatorapp?oauth_token=n5vd99dfnmnf...
我在模拟器和设备上都尝试过。在模拟器上,LogCat 给了我这个:
12-12 15:04:05.743: ERROR/browser(230): onReceivedError -10 scheme://authenticatorapp?oauth_token=Jj...M&oauth_verifier=3ZfuY... 协议不受支持。
--清单文件:
    <activity android:name=".AuthenticatorApp"
        android:launchMode="singleInstance"
        >
        <intent-filter>         
            <category android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.LAUNCHER" />
            <data android:scheme="scheme" android:host="authenticatorapp"></data>                                
        </intent-filter>            
    </activity>

    <!-- Broadcast Receiver that will process AppWidget updates -->
    <receiver android:name=".ZaytungWidget" android:label="@string/widget_name">
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />                             
        </intent-filter>
        <meta-data android:name="android.appwidget.provider"
            android:resource="@xml/tweet_metadata" />
    </receiver>
    <!-- Service to perform web API queries -->
    <service android:name=".ZaytungWidget$UpdateService" />
</application>

<uses-sdk android:minSdkVersion="4" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.INTERNET" />    

3个回答

3

谢谢,我已经附加了清单文件。我不能确定是否需要主要操作,因为我打算从小部件开始。 - Orkun
太棒了,它起作用了。谢谢!<intent-filter> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> - Orkun
@Orkun:有趣的解决方案:我有一个问题,只是为了确认我理解得正确:您正在使用本地应用程序并获取回调,以便用户无需输入任何Twitter OAuth Pin,对吗?对于您在Twitter上的应用程序,注册时是否将其设置为“桌面应用程序”或“Web应用程序”? - Mathias Conradt
@Mathias: "你正在使用本地应用程序并获取回调,以便用户无需输入任何Twitter OAuth Pin,是吗?" 是的。我不太确定用户是否仍然需要在回调后输入任何pin码。结果证明,从uri中捕获验证器就足够了,就像你说的那样。而且我已经注册为Web应用程序。 - Orkun
希望这是最后一个问题:如果我想注册一个回调URL,而不是以http开头,即scheme://,我会收到一条消息“您可能想在回调URL中放置自定义协议。请将此字段留空并通过电子邮件发送给我们api@twitter.com,告诉我们您所需的回调URL和此应用程序的消费者密钥,我们将为您添加它。”--所以你也必须先联系Twitter吗? - Mathias Conradt
显示剩余2条评论

1

这是我在我的工作Manifest.xml中拥有的内容,其中org.gpsagenda.OAUTH是执行身份验证的活动。

        <activity android:name="org.gpsagenda.OAUTH" >
        <intent-filter>
            <action android:name="android.intent.action.VIEW"></action>
            <category android:name="android.intent.category.DEFAULT"></category>
            <category android:name="android.intent.category.BROWSABLE"></category>
            <data android:scheme="gpsagenda" android:host="twitt" />
        </intent-filter>
    </activity>

0

如果您正在开发本地应用程序,则不使用回调参数,但需要让用户在应用程序的某个位置输入PIN码 - 当您在浏览器中打开授权URL或更舒适地在Webview中打开时,他会得到该代码。

您还可以在用户单击授权Twitter网页上的“是”后自动获取PIN码,但不确定是否违反Twitter ToS。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接