Open dingweijie opened 10 years ago
为什么*星号不显示??
我在新浪开发平台的应用信息里的Android 应用程序包名尝试配置:例如:"com.sina.(_星号)" 或:"com.sina.android(_星号)" 在二级或三级后面用*星号代替,但毫无作用。求大神给予帮助!
@woyaowenzi
求助~~~
@mobileresearch
求助~~
@dingweijie "com.sina." 本身就是一个不确定的应用,现在包名就是代表应用的,和应用是关联的,按你的想法,那岂不是所有匹配 "com.sina." 的应用,都能够通过SSO?显示这是不可能的,你需要遵守平台规则。这个问题肯定不会被解决的。So,你想想其它办法吧。
@woyaowenzi
你好,很开心能得到你的回复,但我想你并没有理解我所提的问题,"com.sina." 这只是的举例,我的实际报名"net.digielec.iphoto_mini".通过服务端动态生成APK后,APK的包名就会在我的程序包名后面加服务端生成的码(这个码通过MD5加密的。)变成:"net.digielec.iphoto_mini2345" 后面的“2345”就是服务端生成的码,这样做的意图是因为不同的包名才会在Android手机上装相同的应用不是吗?如果包名相同的话,手机上安装必然会提示覆盖。
也就是说 每个APK的包名都是不同的,只不过包名的前面是统一:“net.digielec.iphoto_mini” ,我在新浪开发平台里的应用信息中的Android包名配置:“net.digielec.iphoto_mini” 是登录不上去的。
@sinaweibosdk @mobileresearch @woyaowenzi
最近查了一下资料,因为Android APK使用过Web端生成的,要想在同一台手机设备上安装两个相同版本的APK,只能通过修改包名(Package Name),才可以,不然安装设备上系统就会默认覆盖安装。若修改包名的话,就无法和新浪开发平台的应用信息里的Android 应用程序包名一致,导致无法登陆。
不知道大神们有没有解决办法?
还是之前所说的,这个问题只能通过包名来做,暂时没有其它方式。
发件人: Noodles [mailto:notifications@github.com] 发送时间: 2013年12月16日 星期一 14:56 收件人: mobileresearch/weibo_android_sdk 抄送: SinaWeiboSDK 主题: Re: [weibo_android_sdk] 关于Android Package Name 的问题; (#61)
@sinaweibosdk https://github.com/sinaweibosdk
@mobileresearch https://github.com/mobileresearch
@woyaowenzi https://github.com/woyaowenzi
最近查了一下资料,因为Android APK使用过Web端生成的,要想在同一台手机设备上安装两个相同版本的APK,只能通过修改包名(Package Name),才可以,不然安装设备上系统就会默认覆盖安装。若修改包名的话,就无法和新浪开发平台的应用信息里的Android 应用程序包名一致,导致无法登陆。
不知道大神们有没有解决办法?
— Reply to this email directly or view it on GitHub https://github.com/mobileresearch/weibo_android_sdk/issues/61#issuecomment-30639387 . https://github.com/notifications/beacon/6027949__eyJzY29wZSI6Ik5ld3NpZXM6QmVhY29uIiwiZXhwaXJlcyI6MTcwMjcwOTc1MCwiZGF0YSI6eyJpZCI6MjE5OTY0MTJ9fQ==--b2831da4912b9e28ea3faa9139cd54e62fcdf177.gif
@dingweijie 现在想起来有一种办法来解决你的问题。使用Code来获取Token,详情请查看Demo和文档。使用Code来获取Token时,是不需要传入包名和签名的,只需要app_key
和app_secret
。请查看Demo中,WBAuthCodeActivity
这个类。
但请注意:不要将你的app_secret
暴露于你的应用中,因为别人通过反编译,能直接看到对应的app_secret。
建议你通过如下步骤来获取Token:
你自己的服务器
,在服务器那边拼接URL来获取token,即使用app_key+code+app_secret来获取token
服务器简单示意代码如下:/**
* 异步获取 Token。
*
* @param authCode 授权 Code,该 Code 是一次性的,只能被获取一次 Token
* @param appSecret 应用程序的 APP_SECRET,请务必妥善保管好自己的 APP_SECRET,
* 不要直接暴露在程序中,此处仅作为一个DEMO来演示。
*/
public void fetchTokenAsync(String authCode, String appSecret) {
WeiboParameters requestParams = new WeiboParameters();
requestParams.add(WBConstants.AUTH_PARAMS_CLIENT_ID, Constants.APP_KEY);
requestParams.add(WBConstants.AUTH_PARAMS_CLIENT_SECRET, appSecret);
requestParams.add(WBConstants.AUTH_PARAMS_GRANT_TYPE, "authorization_code");
requestParams.add(WBConstants.AUTH_PARAMS_CODE, authCode);
requestParams.add(WBConstants.AUTH_PARAMS_REDIRECT_URL, Constants.REDIRECT_URL);
/**
* 请注意:
* {@link RequestListener} 对应的回调是运行在后台线程中的,
* 因此,需要使用 Handler 来配合更新 UI。
*/
AsyncWeiboRunner.request(OAUTH2_ACCESS_TOKEN_URL, requestParams, "POST", new RequestListener() {
@Override
public void onComplete(String response) {
LogUtil.d(TAG, "Response: " + response);
// 获取 Token 成功
Oauth2AccessToken token = Oauth2AccessToken.parseAccessToken(response);
if (token != null && token.isSessionValid()) {
LogUtil.d(TAG, "Success! " + token.toString());
mAccessToken = token;
mHandler.obtainMessage(MSG_FETCH_TOKEN_SUCCESS).sendToTarget();
} else {
LogUtil.d(TAG, "Failed to receive access token");
}
}
@Override
public void onComplete4binary(ByteArrayOutputStream responseOS) {
LogUtil.e(TAG, "onComplete4binary...");
mHandler.obtainMessage(MSG_FETCH_TOKEN_FAILED).sendToTarget();
}
@Override
public void onIOException(IOException e) {
LogUtil.e(TAG, "onIOException: " + e.getMessage());
mHandler.obtainMessage(MSG_FETCH_TOKEN_FAILED).sendToTarget();
}
@Override
public void onError(WeiboException e) {
LogUtil.e(TAG, "WeiboException: " + e.getMessage());
mHandler.obtainMessage(MSG_FETCH_TOKEN_FAILED).sendToTarget();
}
});
}
请教楼主,这个动态更改包名的方式怎么实现。
由于项目需求,Android APK是通过服务端动态生成APK的,所以Manifest里的Package也是有服务端动态更改的,
例如: 包名:"com.sina.android" 那么经过服务端生成的APK后,该APK的包名会变更为:"com.sina.android3421";这样造成的问题新浪微博无法登陆、无法SSO授权的现象,如果包名和新浪开发平台的应用信息里的Android 应用程序包名一样的话就可以正常登陆使用。 我在新浪开发平台的应用信息里的Android 应用程序包名尝试配置:例如:"com.sina." 或:"com.sina.android" 在二级或三级后面用*星号代替,但毫无作用。求大神给予帮助!