新浪微博第三方登录

首先到新浪开放平台下载SDK

申请 APP KEY 


1、把 weiboSDKCore_3.1.4.jar 导入工程,一开始咋是按照官方文档一步步来的,但是。。使用官方提供的登录按钮的时候报错了,估计是要自己设置按钮的图片吧。出于懒的。。我直接把这个JAR包删掉,直接使用下载好的SDK提供的 Library ,即 WeiboSDK 。

在 AndroidManifest.xml 中添加相应的权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<!-- 微博页面授权 -->
        <activity
            android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"
            android:configChanges="keyboardHidden|orientation"
            android:windowSoftInputMode="adjustResize"
            android:exported="false" >
        </activity>
        <meta-data
            android:name="WEIBO_APPKEY"
            android:value="自己申请的appkey" />
        <meta-data
            android:name="WEIBO_CHANNEL"
            android:value="weibo" />
2、然后在自己的界面中添加微博按钮:

<com.sina.weibo.sdk.widget.LoginButton
            android:id="@+id/login_button_style1"
            android:layout_width="@dimen/magin_25dp"
            android:layout_height="@dimen/magin_25dp"
            android:scaleType="fitXY"
            android:layout_marginLeft="@dimen/magin_5dp"
            />
官方默认的按钮有三种形式,也可自己修改 Library 中的图片文件。

3、先在 activity 中的 oncreat 初始化

AuthInfo mAuthInfo = new AuthInfo(this, SinaConstants.APP_KEY, SinaConstants.REDIRECT_URL, SinaConstants.SCOPE);
SinaConstants 类如下:

/**
 * 该类定义了微博授权时所需要的参数。
 * @author LG
 */
public class SinaConstants {


    /** 当前 DEMO 应用的 APP_KEY,第三方应用应该使用自己的 APP_KEY 替换该 APP_KEY */
    public static final String APP_KEY = "1003784332";

    /**
     * 当前 DEMO 应用的回调页,第三方应用可以使用自己的回调页。
     *
     * <p>
     * 注:关于授权回调页对移动客户端应用来说对用户是不可见的,所以定义为何种形式都将不影响,
     * 但是没有定义将无法使用 SDK 认证登录。
     * 建议使用默认回调页:https://api.weibo.com/oauth2/default.html
     * </p>
     */
    public static final String REDIRECT_URL = "http://sns.whalecloud.com/sina2/callback";

    /**
     * Scope 是 OAuth2.0 授权机制中 authorize 接口的一个参数。通过 Scope,平台将开放更多的微博
     * 核心功能给开发者,同时也加强用户隐私保护,提升了用户体验,用户在新 OAuth2.0 授权页中有权利
     * 选择赋予应用的功能。
     *
     * 我们通过新浪微博开放平台-->管理中心-->我的应用-->接口管理处,能看到我们目前已有哪些接口的
     * 使用权限,高级权限需要进行申请。
     *
     * 目前 Scope 支持传入多个 Scope 权限,用逗号分隔。
     *
     * 有关哪些 OpenAPI 需要权限申请,请查看:http://open.weibo.com/wiki/%E5%BE%AE%E5%8D%9AAPI
     * 关于 Scope 概念及注意事项,请查看:http://open.weibo.com/wiki/Scope
     */
    public static final String SCOPE =
            "email,direct_messages_read,direct_messages_write,"
                    + "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"
                    + "follow_app_official_microblog," + "invitation_write";

}

大笑这个是官网文档说明,自己就不写了。

4、新浪按钮的初始化

login_button_style1 = (LoginButton)findViewById(R.id.login_button_style1);
login_button_style1.setWeiboAuthInfo(mAuthInfo, mLoginListener);
login_button_style1.setStyle(LoginButton.LOGIN_INCON_STYLE_3);
//点击事件
login_button_style1.setExternalOnClickListener(mButtonClickListener);

默认按钮有三种形式,分别为LOGIN_INCON_STYLE_1、LOGIN_INCON_STYLE_2、LOGIN_INCON_STYLE_3

登陆认证对应的listener

/**
     * 登入按钮的监听器,接收授权结果。
     */
    private class AuthListener implements WeiboAuthListener {
        @Override
        public void onComplete(Bundle values) {
            accessToken = Oauth2AccessToken.parseAccessToken(values);
            if (accessToken != null && accessToken.isSessionValid()) {
                SinaAccessTokenKeeper.writeAccessToken(getApplicationContext(), accessToken);
                //获取新浪用户API类
                mUsersAPI = new UsersAPI(act,SinaConstants.APP_KEY,accessToken);
                mUsersAPI.show(Long.parseLong(accessToken.getUid()),mListener);
            }

        }

        @Override
        public void onWeiboException(WeiboException e) {
            Toast.makeText(act, e.getMessage(), Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onCancel() {
            Toast.makeText(act,
                    R.string.weibosdk_demo_toast_auth_canceled, Toast.LENGTH_SHORT).show();
        }
    }
按钮的点击监听:

/**
     * 请注意:为每个 Button 设置一个额外的 Listener 只是为了记录当前点击的
     * 是哪一个 Button,用于在 {@link #onActivityResult} 函数中进行区分。
     * 通常情况下,我们的应用不需要定义该 Listener。
     */
    private View.OnClickListener mButtonClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (v instanceof Button) {
                mCurrentClickedButton = (Button)v;

            }
        }
    };
mListener即获取用户信息的监听:

/**
     * 返回用户信息监听
     */
    private RequestListener mListener = new RequestListener(){

        @Override
        public void onComplete(String s) {
            //返回的数据
        }

        @Override
        public void onWeiboException(WeiboException e) {

        }
    };

差不多就这样了,其实下载的SDK里面的demo也有挺详细的,但是提供的文档感觉有点乱。。。 大笑



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值