微博授权登陆

微博使用AS会找不到jar包   需要将so文件放在main下jniLibs目录下

从下载的sdk中复制

AbsOpenAPI,
AccessTokenKeeper,
UsersAPI

.java文件

自定义userInfo接收用户信息


/** * Created by Administrator on 2016/10/3. */public class SinaUserInfo {    private String uid;//用户ID    private String name;//用户昵称    private String avatarHd;//用户头像url    public SinaUserInfo() {        super();        // TODO Auto-generated constructor stub    }    public String getUid() {        return uid;    }    public void setUid(String uid) {        this.uid = uid;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getAvatarHd() {        return avatarHd;    }    public void setAvatarHd(String avatarHd) {        this.avatarHd = avatarHd;    }

    @Override    public String toString() {        return "SinaUserInfo{" +                "uid=‘" + uid + ‘\‘‘ +                ", name=‘" + name + ‘\‘‘ +                ", avatarHd=‘" + avatarHd + ‘\‘‘ +                ‘}‘;    }}

授权页面


import android.content.Context;import android.content.Intent;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.text.TextUtils;import android.util.Log;import android.widget.TextView;import android.widget.Toast;

import com.sina.weibo.sdk.api.share.IWeiboShareAPI;import com.sina.weibo.sdk.api.share.WeiboShareSDK;import com.sina.weibo.sdk.auth.AuthInfo;import com.sina.weibo.sdk.auth.Oauth2AccessToken;import com.sina.weibo.sdk.auth.WeiboAuthListener;import com.sina.weibo.sdk.auth.sso.SsoHandler;import com.sina.weibo.sdk.exception.WeiboException;import com.sina.weibo.sdk.net.RequestListener;

import org.json.JSONException;import org.json.JSONObject;

import seal.yousheng.com.loginlist.sina.AccessTokenKeeper;import seal.yousheng.com.loginlist.sina.SinaUserInfo;import seal.yousheng.com.loginlist.sina.UsersAPI;

public class SinalActivity extends AppCompatActivity {    private Context context;    private IWeiboShareAPI weiboShareAPI;    private SsoHandler ssoHandler;    private AuthInfo authInfo;    private Oauth2AccessToken accessToken;    private SinaUserInfo userInfo;    private String id;    public static final String SWB_REDIRECT_URL = "https://api.weibo.com/oauth2/default.html";//新浪微博回调页面    public static final String SWB_SCOPE = "email,direct_messages_read,direct_messages_write,"            + "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"            + "follow_app_official_microblog," + "invitation_write";

    public Handler handler = new Handler(){

        public void handleMessage(Message msg) {            if(msg.what == 1){                info.setText("用户id:"+userInfo.getUid()+"\n"+"用户名:"+userInfo.getName()+"\n"+"用户头像url:"+userInfo.getAvatarHd());                Toast.makeText(SinalActivity.this,userInfo.toString(),Toast.LENGTH_SHORT).show();            }        }    };    private TextView info;

    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_sinal);        context = this;        id=Constants.SINAAPPID;        //初始化        weiboShareAPI = WeiboShareSDK.createWeiboAPI(context, id);        info = (TextView) findViewById(R.id.userInfo);        loginSina();    }

    private void loginSina() {        authInfo = new AuthInfo(context, id, SWB_REDIRECT_URL, null);        ssoHandler = new SsoHandler(SinalActivity.this, authInfo);        ssoHandler.authorize(new AuthListener());    }

    public class AuthListener implements WeiboAuthListener {

        @Override        public void onComplete(Bundle bundle) {            accessToken = Oauth2AccessToken.parseAccessToken(bundle); // 从Bundle中解析Token            String phoneNum = accessToken.getPhoneNum();// 从这里获取用户输入的 电话号码信息

            if (accessToken.isSessionValid()) {

                AccessTokenKeeper.writeAccessToken(SinalActivity.this, accessToken); // 保存Token                Toast.makeText(context, "授权成功", Toast.LENGTH_SHORT)                        .show();            } else {

                // 以下几种情况,您会收到 Code:                // 1. 当您未在平台上注册的应用程序的包名与签名时;                // 2. 当您注册的应用程序包名与签名不正确时;                // 3. 当您在平台上注册的包名和签名与您当前测试的应用的包名和签名不匹配时。                String code = bundle.getString("code");                String message = "授权失败";                if (!TextUtils.isEmpty(code)) {                    message = message + "\nObtained the code: " + code;                }                Toast.makeText(context, message, Toast.LENGTH_LONG)                        .show();

            }            new Thread(new Runnable() {

                @Override                public void run() {                    // TODO Auto-generated method stub                    UsersAPI usersAPI = new UsersAPI(context, id, accessToken);                    usersAPI.show(Long.valueOf(accessToken.getUid()), new SinaRequestListener());

                }            }).start();        }

        @Override        public void onWeiboException(WeiboException e) {            Toast.makeText(context, "Auth exception : " + e.getMessage(),                    Toast.LENGTH_LONG).show();        }

        @Override        public void onCancel() {            // TODO Auto-generated method stub            Toast.makeText(context, "授权取消", Toast.LENGTH_LONG).show();        }    }

    public class SinaRequestListener implements RequestListener { //新浪微博请求接口

        @Override        public void onComplete(String response) {            // TODO Auto-generated method stub            try {

                JSONObject jsonObject = new JSONObject(response);                String idStr = jsonObject.getString("idstr");// 唯一标识符(uid)                String name = jsonObject.getString("name");// 姓名                String avatarHd = jsonObject.getString("avatar_hd");// 头像

                userInfo = new SinaUserInfo();                userInfo.setUid(idStr);                userInfo.setName(name);                userInfo.setAvatarHd(avatarHd);                Message message = Message.obtain();                message.what = 1;                handler.sendMessage(message);

            } catch (JSONException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }

        @Override        public void onWeiboException(WeiboException e) {            Toast.makeText(context, "Auth exception : " + e.getMessage(),                    Toast.LENGTH_LONG).show();            Log.i("mylog", "Auth exception : " + e.getMessage());        }    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        // TODO Auto-generated method stub        super.onActivityResult(requestCode, resultCode, data);        if(ssoHandler != null){            ssoHandler.authorizeCallBack(requestCode, resultCode, data);        }    }

}配置文件
<!--新浪授权登陆--><activity    android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"    android:configChanges="keyboardHidden|orientation"    android:exported="false"    android:windowSoftInputMode="adjustResize" ></activity>
				
时间: 2024-10-03 01:41:41

微博授权登陆的相关文章

微博第三方登陆请求授权出现错误码:21322(重定向地址不匹配)的解决方法

https://hostcoz.com/151.html 主题自带了微博登陆接口,很简单的去新浪微博开放平台创建了网页应用,然后把APP ID和 AppSecret填好后,以为大功告成后,轻车熟路地点击使用微博登陆,映入我眼前的是: 用微博帐号登录出错了!对第三方应用进行授权时出现错误,请您联系第三方应用的开发者:XXX 或者稍后再试. 错误码:21322重定向地址不匹配 遇到错误就去看了下新浪开放平台的接口说明 错误码为 redirect_uri_mismatch ,是因为没有设置回调地址.

腾讯微博模拟登陆+数据抓取(java实现)

不多说,贴出相关代码. 参数实体: package token.def; import java.io.Serializable; import java.util.Properties; public class TLoginParams implements Serializable { private static final long serialVersionUID = 6120319409538285515L; private String saltUin; private Stri

微信开发微信网页授权登陆不成功的问题

最近一直在研究围绕微信平台的相关开发,其中踩到了不少坑,特来此记录一番,也方便交流.真想吐槽为什么微信弄个开放平台还要加一个公众平台呢?两边文档还不一样.类似的功能还得写两次.上网查了下,果然有人在喷微信文档多次误导第三方sdk写错了:) 上次接到一个任务,PC网站要支持微信第三方登陆功能.一直以为是在服务号那边做相应的配置和处理,看的是这边的文档 .尝试了多次都是提示scope没有相关权限,授权地址格式如下: [javascript] https://open.weixin.qq.com/co

Android App实现微信第三方授权登陆

下载官方SDK 在微信开放平台,下载微信的官方SDK,以及签名生成工具. 地址:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=&lang=zh_CN 2.导入官方SDK 把Android开发工具包里面的libammsdk导入到你的项目中如下图: 这里要注意的是,应用签名不是在Ecl

微信网页授权登陆的一次查错误经历

最近一直在研究围绕微信平台的相关开发,其中踩到了不少坑,特来此记录一番,也方便交流.真想吐槽为什么微信弄个开放平台还要加一个公众平台呢?两边文档还不一样.类似的功能还得写两次.上网查了下,果然有人在喷微信文档多次误导第三方sdk写错了:) 上次接到一个任务,PC网站要支持微信第三方登陆功能.一直以为是在服务号那边做相应的配置和处理,看的是这边的文档 .尝试了多次都是提示scope没有相关权限,授权地址格式如下: https://open.weixin.qq.com/connect/oauth2/

微信登陆,微信SDK授权登陆经验分享

From:http://www.eoeandroid.com/thread-547012-1-1.html 最近因为项目需要做了微信登陆,好像也是微信最近才放出来的接口.还需要申请才能有权限实现授权.其实也比较简单,跟新浪微博和qq授权登陆差不多.不过还是有点差别,不知道是微信sdk本身就没有完善还是其他问题.会有一点蛋疼的地方,下面会细说.(由于等级不够,不能发在经验分享区,只能先写在这里了.希望对要做微信登陆的朋友有帮助,如果有不对的地方还希望大家直言不讳)<ignore_js_op> 首

微信授权登陆

一.前沿:很多时候,我们都需要开发微信功能来实现我们的项目的功能逻辑,微信授权登陆方面的肯定也不少,所以我就封装了个简单的方法来实现,以方便后面使用. 二.流程文档 微信开发者文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432 大概就是5个步骤: 1 :用户同意授权,获取code 2 :通过code换取网页授权access_token 3 :刷新access_token(如果需要) 4 :拉取用户信息(需sco

微信授权登陆接入第三方App(步骤总结)Android

微信授权登陆接入第三方App(步骤总结)Android

微信授权登陆遇到的那些坑

第一次玩这个,发个今天遇到的大坑大家高兴高兴.今天做微信授权登陆,那叫一个水深火热啊,一直遇到这个问题 编译出现错误:linker command failed with exit code 1 本宝宝各种百度,网上说的一个比较全的是 http://www.cocoachina.com/bbs/read.php?tid=268353,然而没有一个适合我.我一步一步按微信官方文档做的就是一直报错,可是官网提供的例子却很顺利的运行,我也是醉了.被逼无奈之下直接把例子里的.a文件替换了官网提供的.a文