开发者社区 问答 正文

适用的开发环境 SDK使用方法:报错

【Android 腾讯微博】-- Oauth2.0认证以及登录 申请AppKey,AppSecret SDK(Android_SDK_v1.2.jar)适用的开发环境 SDK使用方法:报错


申请AppKey,AppSecret

必须到微博开放平台官方网站申请应用的AppKey和AppSecret后,才能完成微博登录。

SDK(Android_SDK_v1.2.jar)适用的开发环境

  • JAVA SDK v5 及以上
  • Android SDK 2.2(level8) 及以上
  • 依赖包:httpmime-4.1.3.jar

特别说明: Android SDK 2.2以下版本的Webview不提供处理SSL异常的方法,因此,如需在Andriod2.2以下版本开发应用,请使用修改版SDK(Android_SDK_v1.2_Fix.jar,该版本只能使用OAuth1.0授权和调用1.0 API,所有连接均为普通http连接)

SDK使用方法

修改AndroidManifest.xml文件

  • 在<manifest>标签中,添加:
<!-- 允许网络访问 -->
<uses-permission android:name="android.permission.INTERNET" />
  • 在<application>标签中,添加:
<!-- OAuth Version 2. 使用  WebView 辅助进行ImplicitGrant方式授权必须 -->
<activity
    android:name="com.tencent.weibo.webview.OAuthV2AuthorizeWebView"
    android:label="@string/app_name" >
</activity>

添加必要JAR包

Android_SDK_v1.2.jar 和 httpmime-4.1.3.jar


-----------------------以上为官方说明-----------------------

认证很简单,官方直接给出了代码,

public class OauthActivity extends Activity{
	 private OAuthV2 oAuth;
	    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.oauth);

        oAuth=new OAuthV2("http://www.tencent.com/zh-cn/index.shtml"); // url回调地址
        oAuth.setClientId("801**5505"); // appkey
        oAuth.setClientSecret("be1dd1410434a9f7d5a2586b****6829"); // secret

        Intent intent = new Intent(OauthActivity.this, OAuthV2AuthorizeWebView.class);
        intent.putExtra("oauth", oAuth);
        startActivityForResult(intent,1);   
    }
    
    protected void onActivityResult(int requestCode, int resultCode, Intent data)   {
        if (requestCode==1) {
            if (resultCode==OAuthV2AuthorizeWebView.RESULT_CODE)    {
                oAuth=(OAuthV2) data.getExtras().getSerializable("oauth");
                //调用API获取用户信息
                UserAPI userAPI=new UserAPI(OAuthConstants.OAUTH_VERSION_2_A);
                try {
                    String response=userAPI.info(oAuth, "json");//获取用户信息
                    ((TextView)findViewById(R.id.textView)).setText(response+"\n");
                } catch (Exception e) {
                    e.printStackTrace();
                }
                userAPI.shutdownConnection();
                
            }
        }
    }
}




原文链接: http://blog.csdn.net/mimitracely/article/details/7974160

展开
收起
kun坤 2020-06-14 09:47:41 571 分享 版权
阿里云 AI 助理回答

根据您的描述,您在尝试使用腾讯微博的Oauth2.0认证进行Android应用开发时遇到了问题。这里有几个可能的问题点和解决建议:

  1. 确保环境配置正确

    • 确保您的开发环境满足要求:JAVA SDK v5及以上,Android SDK 2.2(API level 8)及以上。
    • 您已添加了所有必要的JAR包到项目中,包括Android_SDK_v1.2.jarhttpmime-4.1.3.jar
  2. 回调URL设置

    • 在腾讯微博开放平台注册应用时,需要设置正确的回调URL(oAuth=new OAuthV2("http://www.tencent.com/zh-cn/index.shtml");)。这个URL应该与您在开放平台设置的一致,并且能够处理授权后的回调逻辑。如果只是测试,可以设置为一个本地的URL,但需确保应用能正确接收并处理这个回调。
  3. 权限与Scope

    • 确认在申请AppKey和AppSecret时,您已经为应用赋予了正确的权限(Scope),以便获取用户信息等操作。
  4. SSL异常处理

    • 如果您的应用目标是Android 2.2以下版本,请注意SSL连接的问题。官方提供了修改版SDK(Android_SDK_v1.2_Fix.jar),请按照说明使用此版本以避免SSL异常。
  5. 代码调试

    • 您提供的代码片段中,有一处字符串拼接可能存在问题:((TextView)findViewById(R.id.textView)).setText(response "\n"); 应该是 ((TextView)findViewById(R.id.textView)).setText(response + "\n");,确保字符串被正确拼接。
  6. 网络权限

    • 不要忘记在AndroidManifest.xml中添加网络访问权限:
      <uses-permission android:name="android.permission.INTERNET" />
      
  7. 错误日志分析

    • 您提到“报错”,但未具体说明错误内容。当遇到问题时,查看Logcat中的详细错误信息至关重要,这将帮助定位问题所在。例如,是否有关于网络连接、权限、库引用或回调处理的错误提示。

如果以上步骤都确认无误,但问题依旧存在,建议检查是否有最新的SDK版本可用,因为旧版本的SDK可能存在已知问题或不兼容性。同时,也可以考虑查阅腾讯微博开放平台的官方文档或开发者论坛,看是否有其他开发者遇到过类似问题及其解决方案。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答